Android学习 (二十一) ViewPager基本介绍
来源:互联网 发布:淘宝分享有礼怎么设置 编辑:程序博客网 时间:2024/06/17 21:01
ViewPager可以实现不同页面的滑动,其原理和ListView很像,也需要适配器,为PagerAdapter,下面通过一个简单的例子来梳理一下ViewPager。
我先把整体的代码例子贴出来,然后详细说明。
新建一个项目。
1.在主布局文件中添加ViewPager控件:
<android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="wrap_content" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager>
2.新建三个简单的布局,用来作为滑动显示的页面。
layout_1.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e2e210"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
layout_2.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f98292"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="让我们红尘作伴,活的潇潇洒洒,策马奔腾,共享人世繁华"/></LinearLayout>
layout_3.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#0ac2e2"></LinearLayout>
3.然后在MainActivity.java文件中添加代码:
public class MainActivity extends AppCompatActivity { private View view1,view2,view3;//对应三个layout private ViewPager viewPager;//对应的viewpager @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager)findViewById(R.id.view_pager); //把变量与布局联系起来 LayoutInflater layoutInflater = getLayoutInflater(); view1 = layoutInflater.inflate(R.layout.layout_1,null); view2 = layoutInflater.inflate(R.layout.layout_2,null); view3 = layoutInflater.inflate(R.layout.layout_3,null); List<View> viewList = new ArrayList<View>();//把三个view加载到viewlist中 viewList.add(view1); viewList.add(view2); viewList.add(view3); PagerAdapter pagerAdapter = new PagerAdapter() { @Override public int getCount() { return viewList.size(); } @Override public boolean isViewFromObject(View view, Object object) { //这里要先把从instantiateItem返回的key值object转化成int类型(int)Integer.parseInt(object.toString()),再判断与view是否相等 return view== viewList.get((int)Integer.parseInt(object.toString()));//这里返回很重要 } @Override public void destroyItem(ViewGroup container, int position, Object object) { // 移除指定位置的view container.removeView(viewList.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position));//添加指定位置的view,并且返回 return viewList.get(position); } }; viewPager.setAdapter(pagerAdapter); }}
可以看到这句:
首先还是把View的对象添加到viewList中。
List<View> viewList = new ArrayList<View>();//把三个view加载到viewlist中 viewList.add(view1); viewList.add(view2); viewList.add(view3);
然后,是下面这句话。viewPager的适配器PagerAdapter.
PagerAdapter pagerAdapter = new PagerAdapter();
里面有四个最基本的函数需要重写:
1)这是返回viewList里面存储的View对象的个数,就是会显示页面的个数,这么写就可以。
@Override public int getCount() { return viewList.size(); }
2)这个是销毁当前position位置的页面。
@Override public void destroyItem(ViewGroup container, int position, Object object) { // 移除指定位置的view container.removeView(viewList.get(position)); }
3)加载position位置的页面,并且返回这个view
@Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position));//添加指定位置的view,并且返回 return viewList.get(position); }
4)这句话是判断public Object instantiateItem()函数返回的view是否是来自Object
@Override public boolean isViewFromObject(View view, Object object) { return view== object;//一般这么写就行 }
最后,把适配器加载到viewPager中。
viewPager.setAdapter(pagerAdapter);
点击运行,就可以实现三个页面的来回切换了。
0 0
- Android学习 (二十一) ViewPager基本介绍
- Android学习0906<十一>(ViewPager,fragment碎片)
- android 开发零起步学习笔记(二十一):AsyncTask的基本用法
- Android计时器Chronometer-android学习之旅(二十一)
- Android学习笔记(十一) 基本控件的使用
- Android学习系列之(二)项目目录结构基本介绍
- android学习二十一(使用Pull解析xml)
- android 学习随笔二十一(内容提供者 )
- 学习笔记(二十一)
- 机器学习(二十一)
- python学习(二十一)
- ViewPager 基本介绍
- Android学习 (二十二) ViewPager滑动的页面状态
- Android学习 (二十三) 自定义ViewPager的适配器
- Android 学习笔记二十一之 MediaPlayer
- Android学习之路--简单的ViewPager(二 自定义ViewPager)
- Android中的ViewPager(二)
- android ViewPager学习(二)创建自定义标题
- 1397.Goldbach's Conjecture
- RxJava 创建事件流
- 1194 . Message Flood
- 中科呐喊WiFi热点广告机APP使用教程(安卓)
- Android Gradle Plugin指南(五)——Build Variants(构建变种版本)
- Android学习 (二十一) ViewPager基本介绍
- Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
- LanuchImage启动图设置
- Android 获取View宽高三种方法的使用场景
- spring + springMVC + spring Data + jpa + maven +(Restful风格) 项目框架搭建(即sssp框架)
- 反省我十年开发犯过的错-致程序员
- Android通用适配器CommonAdapter
- oracle学习之:权限
- Ubuntu 14.04 LTS ssh登录服务器免输密码(公钥-私钥)