ViewPager 案例(一)

来源:互联网 发布:linux tesseract yum 编辑:程序博客网 时间:2024/06/06 13:17

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <android.support.v4.view.ViewPager        android:id="@+id/vp_demo"        android:layout_width="fill_parent"        android:layout_height="fill_parent" >    </android.support.v4.view.ViewPager><span style="font-size:10px;"></LinearLayout></span>
layout1.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"     android:gravity="center_horizontal"    android:background="#E0FFFF">    <TextView        android:layout_width="wrap_content"        android:layout_height="0dp"        android:layout_weight="1.0"        android:gravity="center"        android:text="页卡1"        android:textColor="#000000"/></LinearLayout>
layout2.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#E066FF"    android:orientation="vertical" >    <TextView        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="1.0"        android:gravity="center"        android:text="页卡2"        android:textColor="#000000"/></LinearLayout>

ViewPagerDemo.java

package com.example.viewpagerdemo;import java.util.ArrayList;import android.app.Activity;import android.content.Context;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.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;public class MainActivity extends Activity {ViewPager mViewPager;View view1, view2, view3;ArrayList<View> viewList;MyAdapter myAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager = (ViewPager) findViewById(R.id.mViewPager);// forview1 = View.inflate(this, R.layout.layout1, null);view2 = View.inflate(this, R.layout.layout2, null);view3 = View.inflate(this, R.layout.layout3, null);viewList = new ArrayList<View>();viewList.add(view1);viewList.add(view2);viewList.add(view3);// adaptermyAdapter = new MyAdapter(this, viewList);// adaptermViewPager.setAdapter(myAdapter);/** * 页面滚动监听 */mViewPager.setOnPageChangeListener(new OnPageChangeListener() {/** * 当前页面的索引位置--注意是滑动完毕后,并且定位到界面 */@Overridepublic void onPageSelected(int position) {// Log.d("TAG", "onPageSelected:"+position);}/** * arg0 :当前页面,及你点击滑动的页面 *  * arg1:当前页面偏移的百分比--默认是0.0 *  * arg2:当前页面偏移的像素位置  默认是0 *  * 手指向左滑动,都是递增的,是下一张页面的屏幕百分比,以及屏幕像素尺寸 * 手势想右滑动,都是递减的,是当前页面的屏幕百分比,已经屏幕尺寸 */@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stubLog.e("TAG", "onPageScrolled:" + arg0 + ",arg1:" + arg1+ ",arg2:" + arg2);}/** * arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。 * 如果界面定位到第一张,和最后一张,手指向右滑动(最后一张手指向左滑动),则打印10 10 * 10--意思就是正在滑动,然后初始化什么都没做 如果直接常规从1-2 2-1 2-3 3-2 则打印120 * --正在滑动,滑动完毕,初始化什么都没做 */@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub// Log.w("TAG", "onPageScrollStateChanged:"+arg0);}});}class MyAdapter extends PagerAdapter {private ArrayList<View> viewList;private Context mContext;MyAdapter(Context mContext, ArrayList<View> viewList) {this.mContext = mContext;this.viewList = viewList;}@Overridepublic int getCount() {return viewList.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}/** * 每次都缓存当前界面的相邻2张,其他的界面销毁掉, 如果定位到第一张,则缓存第2张,其他的销毁调 * 如果定位到第末张,则缓存倒数第2张,其他的销毁调 */@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stub// Log.i("TAG", "destroyItem position--"+position);container.removeView(viewList.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubcontainer.addView(viewList.get(position));// Log.i("TAG", "instantiateItem position--"+position);return viewList.get(position);}}}





1-2-3



3-2-1




0 0