大家好,今晚我給大家分享的是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);
}
這講就到這裏了,相信大家看有收穫,這個知識點也是非常用到的,美好的一天即將開始,晚安。