首页 > 编程知识 正文

snmp从入门到开发详解,毛笔入门基础教材 推荐

时间:2023-05-06 03:07:33 阅读:110620 作者:4292

前言:这两天我正在研究ViewPager的滚动功能。 现在很多APP都在使用这个功能。 我们的虾也有这个模块。 要研究就彻底研究。 我从未满足于一个功能是简单的应用。 要学就彻底学习。 所以,我打算把ViewPager分成几部分写。 研究的程度写到什么程度呢? 今天是第一篇,基本入门篇。

相关文章:

1、《ViewPager 详解(一)---基本入门》

二、《ViewPager 详解(二)---详解四大函数》

3、《ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同》

4、《ViewPager 详解(四)----自主实现滑动指示条》

五、《ViewPager 详解(五)-----使用Fragment实现ViewPager滑动》

首先,让我们有一个整体的认识,直接参与项目,看看只有这几行代码才能完成如此强悍的功能。 下一篇将结合API详细说明为什么要这样写。

效果图:

实现了三个view之间的相互滑动

第一个视图向第二个视图滑动,第二个视图向第三个视图滑动

一.创建新项目并引入ViewPager控件ViewPager。 这是google SDk附带的附加软件包的类,可用于在屏幕之间切换。

1 .添加到主布局文件

relativelayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/安卓' xmlns 3360 tools=' http://schemas.Android ' xmlns 360 to ools=' 3358 schemas.Android tools ' Android 3360 layout _ widwid ill _ parent ' tools 3360 context=id.support.v4.view.viewpagerandroid : id=' @ id/view pager ' Android 3360 layout

其中Android.support.v4.view.view pager /为ViewPager对应的组件,要将其放到想要滑动的位置

新建2、3个layout。 用于幻灯片切换的视图也可以从效果图中看出。 我们的三个视图都很简单,里面没有任何控件。 大家当然可以在里面添加各种控件,这里是DEMO,只需要详细了解原理就可以了,所以这里只用背景来区别不用layout的布局。

布局代码分别如下:

layout1.xml

? XML版本=' 1.0 '编码=' utf-8 '? linearlayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' Android 3360 layout _ width=' match _ match

? XML版本=' 1.0 '编码=' utf-8 '? linearlayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/Android ' Android 3360 layout _ width=' match _ match

? XML版本=' 1.0 '编码=' utf-8 '? linearlayoutxmlns 3360 Android=' http://schemas.Android.com/apk/RES/androi

d" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff00ff" android:orientation="vertical" > </LinearLayout>

 

二、代码实战

先上整体代码,然后逐步讲解。

package com.example.testviewpage_1;/** * @author harvic * @date 2014.8.9 */import java.util.ArrayList;import java.util.List;import java.util.zip.Inflater;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MainActivity extends Activity {private View view1, view2, view3;private ViewPager viewPager; //对应的viewPagerprivate List<View> viewList;//view数组 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager) findViewById(R.id.viewpager); LayoutInflater inflater=getLayoutInflater(); view1 = inflater.inflate(R.layout.layout1, null); view2 = inflater.inflate(R.layout.layout2,null); view3 = inflater.inflate(R.layout.layout3, null); viewList = new ArrayList<View>();// 将要分页显示的View装入数组中viewList.add(view1);viewList.add(view2);viewList.add(view3);PagerAdapter pagerAdapter = new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewList.size();}@Overridepublic void destroyItem(ViewGroup container, int position,Object object) {// TODO Auto-generated method stubcontainer.removeView(viewList.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(viewList.get(position));return viewList.get(position);}};viewPager.setAdapter(pagerAdapter); }}

代码量很小,全部放在了OnCreate()函数中。

 

1、先看声明的变量的意义:

 

 

private View view1, view2, view3;private List<View> viewList;//view数组private ViewPager viewPager; //对应的viewPager

 

首先viewPager对应 <android.support.v4.view.ViewPager/>控件。

view1,view2 ,view3对应我们的三个layout,即layout1.xml,layout2.xml,layout3.xml

viewList是一个View数组,盛装上面的三个VIEW

2、接下来是他们的初始化过程:

 

viewPager = (ViewPager) findViewById(R.id.viewpager);LayoutInflater inflater=getLayoutInflater();view1 = inflater.inflate(R.layout.layout1, null);view2 = inflater.inflate(R.layout.layout2,null);view3 = inflater.inflate(R.layout.layout3, null);viewList = new ArrayList<View>();// 将要分页显示的View装入数组中viewList.add(view1);viewList.add(view2);viewList.add(view3);

初始化过程难度不大,就是将资源与变量联系起来布局,最后将实例化的view1,view2,view3添加到viewList中

 

3、PageAdapter——PageView的适配器

 

适配器这个东东想必大家都不莫生,在ListView中也有适配器,listView通过重写GetView()函数来获取当前要加载的Item。而PageAdapter不太相同,毕竟PageAdapter是单个VIew的合集。

PageAdapter 必须重写的四个函数:

 

boolean isViewFromObject(View arg0, Object arg1)int getCount() void destroyItem(ViewGroup container, int position,Object object)Object instantiateItem(ViewGroup container, int position)

 

先看看各个函数,我们上面都做了什么吧:

 

@Overridepublic int getCount() {// TODO Auto-generated method stubreturn viewList.size();}

getCount():返回要滑动的VIew的个数

 

 

@Overridepublic void destroyItem(ViewGroup container, int position,Object object) {// TODO Auto-generated method stubcontainer.removeView(viewList.get(position));}

destroyItem():从当前container中删除指定位置(position)的View;

 

@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(viewList.get(position));return viewList.get(position);}};

instantiateItem():做了两件事,第一:将当前视图添加到container中,第二:返回当前View

 

@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}

isViewFromObject():对于这个函数就先不做讲解,大家目前先知道它要这样重写就行了,后面我们会对它进行改写。

 

下一篇,我将仔细讲解这几个函数的意义,与有关Key的知识,当然最后也会有个例子给大家。这篇就到这了。

 

源码地址:http://download.csdn.net/detail/harvic880925/7733249

 

请大家尊重原创者版权,转载请标明出处:http://blog.csdn.net/harvic880925/article/details/38453725  万分感激!!!!!

如果你喜欢我的文章,你可能更喜欢我的公众号

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。