android-每日demo

来源:互联网 发布:网络分层模型详解 编辑:程序博客网 时间:2024/06/10 09:58

ViewPager 的使用

ViewPager的功能是让页面能随手势左右滑动而滑动。

首先准备三张页面,layout1,layout2,layout3,代码如下;

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:id="@+id/layout1"     android:background="#aa0000"><TextView android:id="@+id/view1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="one"/></RelativeLayout>

三个页面代码差不多,只是id不同,text值分别为one,two,three;

然后是主页面的代码,main.xml;

<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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" ><android.support.v4.view.ViewPager     android:id="@+id/viewpager"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center">    <android.support.v4.view.PagerTabStrip        android:id="@+id/pager_tab"        android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="top"/></android.support.v4.view.ViewPager></RelativeLayout>
其中android.support.v4.view.ViewPager 是主体内容,android.support.v4.view.PagerTabStrip是顶栏TAB。

然后是MainActivity代码;

package com.example.demo1;import java.util.ArrayList;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.app.Activity;public class MainActivity extends Activity {private View view1;private View view2;private View view3;private ArrayList<View> viewList;private ViewPager viewPager;private ArrayList<String> titleList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager  = (ViewPager)findViewById(R.id.viewpager);LayoutInflater tInflater = getLayoutInflater();view1 = tInflater.inflate(R.layout.layout1, null);view2 = tInflater.inflate(R.layout.layout2, null);view3 = tInflater.inflate(R.layout.layout3, null);viewList = new ArrayList<View>();viewList.add(view1);viewList.add(view2);viewList.add(view3);titleList = new ArrayList<String>();titleList.add("yi");titleList.add("er");titleList.add("san");viewPager.setAdapter(pagerAdapter);viewPager.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int arg0) {System.out.println("选中");}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {System.out.println("旋转");}@Overridepublic void onPageScrollStateChanged(int arg0) {System.out.println("改变");}});}PagerAdapter pagerAdapter = new PagerAdapter() {@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(viewList.get(position));//System.out.println("cur positon======"+position);return viewList.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(viewList.get(position));}@Overridepublic CharSequence getPageTitle(int position) {return titleList.get(position);}@Overridepublic int getCount() {//System.out.println("size =========="+viewList.size());return viewList.size();}};}
ViewPager跟ListView一样,需要一个适配器来相辅,这个适配器的名字叫做PagerAdaper;

首先是适配器的用法,很简单,三步:

一找到要显示的内容,显示的内容为三张页面,也就是三个layout,通过LayoutInflater来加载,存放在一个list里;

二找到要显示(内容)的容器,容器是android.support.v4.view.ViewPager,通过findViewById找到;

三设置适配器;setAdaper。


然后是重写PagerAdaper,里面有四个方法必须,一为isViewFromObject,从名字可以看出是干嘛的;二为getCount,得到view的个数;三为instantiateItem,增加页面;四为destroyItem,删除页面;都很简单,通过代码就能理解意思。


最后是整个demo的执行顺序:

首先自然是onCreate;

然后一直顺序往下到setAdapter;

然后跳到PagerAdaper里,首先执行的是getCount,这个方法会一直执行,直到一个页面被停下来,也就是手指不再滑动,而这个方法也是PagerAdaper的关键;

然后是instantiateItem方法,当position发生改变时,会调用此方法;

而destroyItem内也有一个position,但是这个position比instantiateItem中的要小2,也就是说当加载到第三张页面时,第一张页面才会被删除。


0 0
原创粉丝点击