ViewPager加強版

         大家好,今晚我給大家分享的是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);
 }

   這講就到這裏了,相信大家看有收穫,這個知識點也是非常用到的,美好的一天即將開始,晚安。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章