ViewPager加强版

来源:互联网 发布:安卓7.0运行java模拟器 编辑:程序博客网 时间:2024/05/01 06:31

         大家好,今晚我给大家分享的是ViewPagerjian加强版,之前介绍的ViewPager只是简单的一些操作,没有涉及到高深的一些知识,这讲我给大家增加重头戏。在ViewPager增加移动点,翻页改变文字内容,实现无限重复翻页等功能。说了那么多,相信大家非常感兴趣,。恩,让我一起走上探索道路。


1.res/layout文件

activity_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.support.v4.view.ViewPager
        android:id="@+id/mViewPager"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#22ff0000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_below="@id/mViewPager"
        android:background="#6F7069"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/context_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:textSize="23sp" />

      //引用布局dot_image

        <include layout="@layout/dot_image" />
       
    </LinearLayout>

    </RlativeLayout>

dot_image.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:id="@+id/llayout" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dot_show"
        android:enabled="false" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dot_show" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dot_show" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dot_show" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dot_show" />

</LinearLayout>


2.MainActivity.java

public class MainActivity extends Activity{

//这里我没有采用的传统的初始化,finViewById,我用到的是框架Xutil的ViewUtil,可以简单代码,方便简洁初始化,和赋值,这就是框架带给我们的好处

@ViewInject(R.id.context_tv)
 private TextView contextTv;
 
 @ViewInject(R.id.llayout)
 private LinearLayout llayout;

//上一个点
   Prvate int preDotPosition;
 //内容数组
     private String[] contentArray={"巩俐不低俗,我就不能低俗","朴树又回来了,再唱经典老歌引百万人同唱啊","揭秘北京电影如何升级","乐视网TV版大放送","热血屌丝的反杀"};

//注解ViewPager

 @ViewInject(R.id.mViewPager)
 private ViewPager mViewPager;

//List集合,类型是ImageView

 private List<ImageView> mPagerList;
 private Context context;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

//取标题

reqindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.activity_main);
  //注解到这个Activity
     VeiwUtilject(this);

  context = this;

//显示数组第一内容
contextTv.setText(contentArray[0]);

// 创建子页面
  initPager();

  //初始化列表

  PagerList new ArrayList<ImageView>();
//展示数据,好比适配器

mViewPager.setAdapter(new PagerAdapter() {

   @Override
   public boolean isViewFromObject(View arg0, Object arg1) {
    // TODO Auto-generated method stub
    return arg0 == arg1;
   }

   @Override
   public int getCount() {

//这里我把列表集合个数设置为100,实现重复翻页,当你把集合个数写的小的话,就不能实现翻页,因为就只有那几个页面,就不能翻页
  return 100;
   }

   //销毁方法

 public void destroyItem(ViewGroup container, int position,
     Object object) {

// position%mPagerList.size表示页面的索引号,Position是1到100数字,当它除以mPagerList.size()也就是5,余数是1,2,3,4,5,

//我们就可以根据这个获取View视图。这里是ImageView
    View view=mPagerList.get(position%mPagerList.size());
    container.removeView(view);
   //没有返回值说明这里不用ImageView
 }

  //实例化方法,这里是添加View.
 public Object instantiateItem(ViewGroup container, int position) {
    View view=mPagerList.get(position%mPagerList.size());
    container.addView(view);
    //返回视图

return view;
   }

  });

  //页面改变监听

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

   @Override
   public void onPageSelected(int position) {

//改变翻页的文字

   contextTv.setText(contentArray[position%mPagerList.size()]);
//得到LinearLayout的子控件,TextView的dot点,设置显示颜色点

     llayout.getChildAt(position%mPagerList.size()).setEnabled(false);

//得到上一个Dot,设置为无颜色点
     llayout.getChildAt(preDotPosition).setEnabled(true);

//得到不断更新的索引号

    preDotPosition=position%mPagerList.size();
    
   }

   @Override
   public void onPageScrolled(int arg0, float arg1, int arg2) {
    // TODO Auto-generated method stub

   }

   @Override
   public void onPageScrollStateChanged(int arg0) {
    // TODO Auto-generated method stub

   }
  });

 }

//创建子页面,并添加List集合里

 private void initPager() {

  ImageView image1 = new ImageView(context);
  image1.setBackgroundResource(R.drawable.a);
  mPagerList.add(image1);

  ImageView image2 = new ImageView(context);
  image2.setBackgroundResource(R.drawable.b);
  mPagerList.add(image2);

  ImageView image3 = new ImageView(context);
  image3.setBackgroundResource(R.drawable.c);
  mPagerList.add(image3);

  ImageView image4 = new ImageView(context);
  image4.setBackgroundResource(R.drawable.d);
  mPagerList.add(image4);

  ImageView image5 = new ImageView(context);
  image5.setBackgroundResource(R.drawable.e);
  mPagerList.add(image5);
 }

   这讲就到这里了,相信大家看有收获,这个知识点也是非常用到的,美好的一天即将开始,晚安。




0 0
原创粉丝点击