Android初学之ViewPager
来源:互联网 发布:淘宝卖家网页制作 编辑:程序博客网 时间:2024/05/16 12:58
作为一个android的小菜鸟,第一次写微博总是有点小忐忑的,今天看项目的源代码时,对ViewPager控件比较感兴趣,便查了点资料自己写了一个十分简单的demo。
ViewPager作为一个ViewGroup的扩展,他的实现有点类似于ListView控件,我自己喜欢把这类的控件叫做AdapterView,就是需要适配器的View。
接下来,我们就来看一下这类控件实现的基本步骤,当然这里我还没有能力从源码的角度去解释整个控件的运行。
AdapterView(需要适配器的View)一般都具有三个要素:1)控件本身,本文就是ViewPager 2)与之匹配的适配器adapter 3)控件所需要展示的数据(包含数据和布局,统称为数据)
adapter就像一个连接ViewPager和数据的桥梁,他的实现是ViewPager功能有效执行的关键。所以,在定义自己需要的adapter的时候需要注意两个方面:1)如何与ViewPager联系起来(一般这种面向控件的操作十分简单,直接调用ViewPager的setAdapter()方法) 2)如何与数据层联系起来:这里就需要根据自己的需求去定义UI布局和数据,然后将定义好的数据传给adapter
数据的形式应该是怎么样的?对于AdapterView来说,每一项的布局应该是完全一样的,但是其中展现的数据可能不一样,但数据类型在整体上来说肯定是一样的。所以在这里用ArrayList< View >十分恰当,可以在adapter的实现中,定义一个ArrayList< View >类型的成员,用来保存所要展示的数据(UI布局和数据)。显然在这里,View = 数据+布局。
- MainActivity代码:
package com.example.administrator.mylinkedviewpager;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import com.example.administrator.myadapter.ViewPagerAdapter;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private ViewPager vp; private List<View> views = new ArrayList<View>(); private ViewPagerAdapter vpAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } public void initViews(){ LayoutInflater inflater = LayoutInflater.from(this); View view1 = inflater.inflate(R.layout.guide, null); initView(view1,R.drawable.guide_1); views.add(view1); View view2 = inflater.inflate(R.layout.guide, null); initView(view2,R.drawable.guide_2); views.add(view2); View view3 = inflater.inflate(R.layout.guide, null); initView(view3,R.drawable.guide_3); views.add(view3); vp = (ViewPager)findViewById(R.id.viewPager); vpAdapter = new ViewPagerAdapter(views,this); vp.setAdapter(vpAdapter); } public void initView(View view,int drawable){ ImageView imgView = (ImageView)view.findViewById(R.id.imgView); imgView.setImageResource(drawable); }}
2.适配器代码:
package com.example.administrator.myadapter;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import java.util.List;/** * Created by zhouyoudade on 2016/7/19 0019. */public class ViewPagerAdapter extends PagerAdapter { private List<View> views; private Context context; public ViewPagerAdapter(List<View> views, Context context) { this.views = views; this.context = context; } @Override public void destroyItem(View container, int position, Object object) { ((ViewPager)container).removeView(views.get(position)); } @Override public Object instantiateItem(View container, int position) { ((ViewPager)container).addView(views.get(position)); return views.get(position); } @Override public int getCount() { return views.size(); } @Override public boolean isViewFromObject(View view, Object object) { return (view == object); }}
3.布局文件:
---------------------guide.xml---------------------------<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/imgView"/></RelativeLayout>--------------activity_main.xml--------------------------<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewPager"> </android.support.v4.view.ViewPager></RelativeLayout>
- Android初学之ViewPager
- 初学Android之PullToRefresh+listview+ViewPager
- 初学Android,viewpager
- Android初学习 - ViewPager与Fragment初步
- 初学Android之viewPager+imageLoader+图片圆角(类似qq头像)+xListView+DrawLayout
- android学习之-ViewPager
- Android开发之ViewPager
- Android UI之ViewPager
- Android 之 ViewPager
- android之ViewPager
- Android界面之ViewPager
- Android UI之ViewPager
- android之ViewPager
- Android进阶之ViewPager
- android控件之ViewPager
- Android之 Viewpager
- Android开发之ViewPager
- Android之ViewPager+RadioGroup
- Android ListView 弹性滚动简单实现
- Android学习笔记032之数据存储—文件存储读取
- $x输出什么?
- 抽屉原理简单应用 POJ 2356 POJ 3370
- 第三届中国云计算用户大会笔记和心得
- Android初学之ViewPager
- 如何使用appverifier?
- Exception sending context initialized event to listener instance of class org.springframework.web.co
- Freescale android 4.4.2 平台工具链安装--技巧
- 阻塞与非阻塞-同步与异步
- Java泛型
- Android网络请求框架Retrofit使用详解
- 实现自定义的Service
- 搜集的一些mysql数据库操作,建表之类的就不写啦