Android ViewPager使用方法
来源:互联网 发布:阿里云公司 编辑:程序博客网 时间:2024/06/06 17:13
ViewPager是一个能平滑分页显示的控件,对于某些应用选择该控件是极其方便的,如显示照片、广告、产品信息等。如果需要轮播,只需要加一个定时器即可实现。下面首先介绍使用ViewPager的一般方式。
我们需要在xml里面定义好ViewPager组件,
<android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center"/>
定义好后,我们可以在Activity中找到这个ViewPager,对其分配一个适配器。
mViewPager = (ViewPager) findViewById(R.id.viewpager);mViewPagerAdapter = new MyViewPagerAdapter(this, mJsonArray);mViewPager.setAdapter(mViewPagerAdapter);
在这里重点是写一个继承于PagerAdapter的子类,如public class MyViewPagerAdapter extends PagerAdapter,new MyViewPagerAdapter(this, mJsonArray)中的第二个参数是装载到ViewPager中的数据源,是一个JSONArray,这个数据源可以从服务器上获取,也可以从Android设备本地获取。在这个类里,需要覆写几个重要的方法:
- public Object instantiateItem(ViewGroup container, int position)
- public int getCount()
- public void destroyItem(View container, int position, Object object)
- public boolean isViewFromObject(View view, Object object)
第一个方法是初始化方法,在这里添加viewpager中的不同布局的view,如下面的itemView = new LcCpItemView(mContext, dataObj)、staItemView = new SingleStaItemView(mContext)、adItemView = new GgItemView(mContext);这几个对象类都是LinearLayout的子类,在这些类里,加载自己想要的布局文件以及数据源。
@Overridepublic Object instantiateItem(ViewGroup container, int position) { // 这个方法用来实例化页卡try {//Log.e(TAG, "position=" + position);dataObj = (JSONObject) mArray.get(position);String type = dataObj.getString("type");if ("CP".equals(type)) {LcCpItemView itemView;itemView = new LcCpItemView(mContext, dataObj);((ViewPager) container).addView(itemView);return itemView;} else if ("YG".equals(type)) {SingleStaItemView staItemView;//Log.e(TAG, "instantiate:" + position);staItemView = new SingleStaItemView(mContext);ImageView imageView = (ImageView) staItemView.findViewById(R.id.sb);imageView.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View v) {login(mContext);return true;}});staItemView.setData(dataObj);if (staItemView.bitmap != null&& !staItemView.bitmap.isRecycled()) {staItemView.bitmap.isRecycled();}System.gc();((ViewPager) container).addView(staItemView);return staItemView;} else if ("GG".equals(type)) {GgItemView adItemView;adItemView = new GgItemView(mContext);adItemView.setData(dataObj, position);if (adItemView.bitmap != null&& !adItemView.bitmap.isRecycled()) {adItemView.bitmap.isRecycled();}System.gc();((ViewPager) container).addView(adItemView);return adItemView;}} catch (JSONException e) {e.printStackTrace();}return null;}第二个方法是获取总共页数的方法
@Overridepublic int getCount() {return mArray.length();// 返回页卡的数量}
第三个方法是销毁掉页面的方法,只有添加了这个方法,对某些页面进行销毁后,才不会出现内存溢出错误
@Overridepublic void destroyItem(View container, int position, Object object) {((ViewGroup) container).removeView((View) object);}
ViewPager还有其监听事件,如触摸事件:
mViewPager.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:case MotionEvent.ACTION_MOVE:isContinue = false;break;case MotionEvent.ACTION_UP:isContinue = true;break;default:isContinue = true;break;}return false;}});
页面变化监听事件:
OnPageChangeListener pageListener = new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {// Log.e(TAG, "onPageSelected():arg0="+arg0);isContinue = false;random = arg0 - 1;// Log.e(TAG, "换页后random="+random);isContinue = true;}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}};
mViewPager.setOnPageChangeListener(pageListener);
完成上述几个步骤基本就能够实现分页效果了,下图是为"GG".equals(type)的情况,这个布局里就只有一个ImageView。
- Android ViewPager使用方法
- Android ViewPager使用方法
- Android ViewPager基本使用方法
- Android ViewPager的使用方法
- Android ViewPager使用方法小结
- Android ViewPager使用方法+ViewPager循环滑动
- android ViewPager嵌套的使用方法
- Android ViewPager的简单使用方法
- android开发笔记之viewpager 基本使用方法
- ViewPager使用方法
- ViewPager使用方法
- ViewPager使用方法
- Android开源控件ViewPager Indicator的使用方法
- Android开源控件ViewPager Indicator的使用方法
- Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用
- ViewPager的使用方法
- ViewPager+Fragment基本使用方法
- ViewPager的使用方法
- jQuery MiniUI Demo
- DD-WRT 经验总结
- java 打包 jar
- C# 编程中的Lambda表达式
- PHP 获取文件的扩展名的6种方法
- Android ViewPager使用方法
- bsdiff源码
- ubuntu下配置安装jdk1.6实用简单方法详解
- hadoop单节点安装(伪分布式)
- 修改的 创建队列程序 C语言。 队列元素 是堆分配内存,而非指针
- oracle dual表
- 启动app ,EditText失去焦点,点击获取焦点
- 在网页中交互unity3d
- 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复