Android:初级控件之(一)ViewPager(一)
来源:互联网 发布:台湾网络加速器 编辑:程序博客网 时间:2024/05/15 08:32
相信大家也见过淘宝app上会有一个会滚动的图片横条:
这个就是这篇笔记的主角:ViewPager
ViewPager
viewpager是android开发的时候常用到的控件,是Google在Android 1.6出来以后放在v4支持包里面的后来的控件。ViewPager可以用于作图片的滑动,也可以用作fragment的载体。
图片滑动
(简易版)
首先,我们在 xml文件中加入 viewpager这个控件的标签:
<?xmlversion="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.scrollconflict1.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
加入viewpager以后不需要加什么属性,记得加上ID即可
创建好内容:
为了方便操作,我们将所有的ImageView创建好放在一个 List里面
在Activity 中的代码如下:
public classMainActivity extends AppCompatActivity { private Context context; @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //为了方便调用上下文对象 context = MainActivity.this; //关联 viewpager 控件 ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager); //创建3个 ImageView ImageView im1 = new ImageView(context); ImageView im2 = new ImageView(context); ImageView im3 = new ImageView(context); //给创建好的 ImageView 设置图片资源 im1.setImageResource(R.mipmap.one); im2.setImageResource(R.mipmap.two); im3.setImageResource(R.mipmap.three); //塞 ImageView 到一个 List 中 List<ImageView> list = newArrayList<>(); list.add(im1); list.add(im2); list.add(im3); } }
因为viewpager 是属于一种容器,即你不往里面放内容,他是空的。
在android里面,容器控件与数据之间是通过 Adapter(适配器)来进行分配的。
所以我们现在就要来重写一下Adapter
重写Adapter里面的方法:
需要必須重写的方法有4个:
返回viewpager 总共有多少页:getCount(),
把ImageView 塞入容器的方法:instantiateItem(ViewGroup container, intposition),
判断当前视图和容器中的视图是否为相同的视图:isViewFromObject(View view, Object object),
当view 滑出 viewpager的时候,要销毁的时候调用的方法:destroyItem(ViewGroup container, intposition, Object object)
代码如下:
public classMyAdapter extends PagerAdapter { //用于接收传进来的ImageList private List<ImageView> list;//用于接收传进来的上下文对象 private Context context; public MyAdapter(List<ImageView>list, Context context) { this.list = list; this.context = context; } /** * 页面的总数,必须要重写 * * @return */ @Override public int getCount() { return list.size(); } /** * 增添对象到容器中,必须要重写 * * @param container * @param position * @return */ @Override public Object instantiateItem(ViewGroupcontainer, int position) { ImageView temp = list.get(position);//给容器 container.addView(temp); return temp; } /** * 判断返回的对象是否是同一个对象,如果是,则返回true,必须要重写 * * @param view * @param object * @return */ @Override public boolean isViewFromObject(View view,Object object) { if (view.equals(object)) return true; else return false; } /** * 销毁对象的方法,必须要重写 * * @param container * @param position * @param object */ @Override public void destroyItem(ViewGroupcontainer, int position, Object object) { container.removeView((View) object); } }
在创建好adapter之后,最后一步
给 ViewPager设置好适配器
public classMainActivity extends AppCompatActivity { private Context context; @Override protected void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //为了方便调用上下文对象 context = MainActivity.this; //关联 viewpager 控件 ViewPager viewPager = (ViewPager)findViewById(R.id.viewpager); //创建3个 ImageView ImageView im1 = new ImageView(context); ImageView im2 = new ImageView(context); ImageView im3 = new ImageView(context); //给创建好的 ImageView 设置图片资源 im1.setImageResource(R.mipmap.one); im2.setImageResource(R.mipmap.two); im3.setImageResource(R.mipmap.three); //塞 ImageView 到一个 List 中 List<ImageView> list = newArrayList<>(); list.add(im1); list.add(im2); list.add(im3); MyAdapter adapter = new MyAdapter(list, context); viewPager.setAdapter(adapter); } }
简单的ViewPager 就先介绍到这里了,更深一层的 ViewPager的用法会有后续文章介绍,欢迎各位来纠正或给出更多的建议
- Android:初级控件之(一)ViewPager(一)
- android常用控件ViewPager(一) ViewPager基本应用
- 一、Android控件选择之ViewPager
- Android之ViewPager总结(一)
- Android之ViewPager笔记(一)
- Android[初级] android开发学习之(一)HelloWrold
- Android中的ViewPager(一)
- android 初级篇:(一)漫谈android
- Android之ViewPager(引导界面)(一)
- JAVA 反射 总结 之 初级 (一)
- android控件开发之ExpandableListActivity(一)
- Android控件之ListView(一)
- Android控件之ListView(一)
- Android控件之ListView(一)
- Android常用控件之ListView(一)
- Android:基础控件之(一)Button
- Android常用复杂控件使用(一)--ViewPager
- Android 网络编程 初级入门(一)
- mysql 发生系统错误1067的解决方法
- Mac利用PD虚拟机安装Centos7
- 161221
- 微信小程序开发之页面分享 onShareAppMessage 分享参数用处
- faster-rcnn 之 RPN网络的结构解析以及RPN代码详解
- Android:初级控件之(一)ViewPager(一)
- web编程课程小结
- Android-聊聊MVC设计模式
- 安全之初级篇——加解密、签名和证书理解分析
- 充值
- Suse 11 Install Nginx 1.10.1
- nodejs中aes-128-cbc加密和解密
- 开源地图OSM Gis 下只屏蔽地图区域的修改方法!
- wireless_iw