viewpager
来源:互联网 发布:微信数据转移到sd卡 编辑:程序博客网 时间:2024/05/28 09:33
最近在书写相册,用到了viewpager,先转载一篇,后续优化整理
转载链接:http://www.jianshu.com/p/6b1008fcc082
一、ViewPager:
- ViewPager是android-support-v4.jar包中的一个系统控件
- ViewPager继承自ViewGroup
- ViewPager专门用以实现左右滑动切换View的效果
二、ViewPager常用方法
- setAdapter(PagerAdapter adapter)
建立与适配器的联系
adapter:与ViewPager配合使用的适配器 - ViewPager.getCurrentItem()
返回当前页的索引,也就是返回当前显示的页码;
adapter:与ViewPager配合使用的适配器 - ViewPager.setCurrentItem(int position)
设置当前页,position:被设置的当前页的索引;
三、PagerAdapter类
PagerAdapter类是与ViewPager配合使用的适配器类
ViewPager将调用PagerAdapter来取得所需显示的页,而PagerAdapter也会在数据变化时,通知ViewPager。
- getCount()
获取ViewPager实际绘制的列表项的数量
- destroyItem(ViewGroup container,int position,Object object)
当前项离开屏幕时回调本方法,在本方法中需要将当前想从ViewPager中移除;
- instantiateItem(ViewGroup container, int position)
获取当前列表项,也就是正在显示的当前页,当前ViewPager所在的位置;
- isViewFromObject(View view,Object obj)
判断view和obj是否为同一个view
四、使用ViewPager
ViewPager的使用跟ListView的使用步骤相似
1.准备布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="cn.ucai.viewpager.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/vpGoods" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
2.准备数据源
3.填充适配器
java代码
public class MainActivity extends AppCompatActivity { ViewPager mvpGoods; ArrayList<Integer>mGoodsList; ArrayList<ImageView> mivGoodsList; GoodsAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ //准备数据源 mGoodsList=new ArrayList<>(); mGoodsList.add(R.drawable.goods01); mGoodsList.add(R.drawable.goods02); mGoodsList.add(R.drawable.goods03); mGoodsList.add(R.drawable.goods04); mGoodsList.add(R.drawable.goods05); mivGoodsList=new ArrayList<>(); for(int i=0;i<mGoodsList.size();i++){ ImageView iv=new ImageView(this); iv.setImageResource(mGoodsList.get(i)); mivGoodsList.add(iv); } mAdapter=new GoodsAdapter(this,mivGoodsList); mvpGoods= (ViewPager) findViewById(R.id.vpGoods); mvpGoods.setAdapter(mAdapter); } //准备适配器类 class GoodsAdapter extends PagerAdapter { Context context; ArrayList<ImageView> ivGoodsList; public GoodsAdapter(Context context,ArrayList<ImageView>ivGoodsList){ this.context=context; this.ivGoodsList=ivGoodsList; } @Override public int getCount() { return ivGoodsList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public ImageView instantiateItem(ViewGroup container, int position) { ImageView imageView=ivGoodsList.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { ImageView imageView=(ImageView)object; container.removeView(imageView); } }}
阅读全文
0 0
- Viewpager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- Viewpager
- viewpager
- ViewPager
- ViewPager
- ViewPager
- viewpager
- ViewPager
- ViewPager
- Linus实验楼笔记——第15节:Linux进程之初步了解
- 快速排序算法
- 使用X-UA-Compatible来设置IE浏览器兼容模式
- 选项卡变化
- java--byte
- viewpager
- winsparkle
- 一 单例模式
- vs2010+QT开发配置
- 入门赛8
- Eclipse内置SVN下载
- 使用Spring的@Scheduled实现定时任务以及解决无法执行定时任务
- opencv如何读取图像、视频(基于Python语言)
- 【数据平台】Eclipse+Scala开发环境(本机和集群两个运行模式)