ViewPager的應用以及禁用滑向下一頁

ViewPager 實現了ViewFlipper的效果,都是用來實現劃屏的.這點用過的人都知道,不過比ViewFlipper效果人性化多了,ViewPager的應用會使得view跟着手勢來回拖拽,而ViewFlipper不會,只能手勢劃完了,效果才展現.
雖說ViewPager 效果已經很棒了,但是還是沒有iphone那種看着舒服,記得Iphone左右滑屏的時候在最後或者最開始的時候可以拽一下然後自動返回,也就是不存在此page.
這點看起來心裏就比較爽,而android沒有實現,不過android 功能強大,只要iphone上有的,你想的出來的都可以實現,關鍵還是水平哦。
      原理:ViewPager 自己去查,網上很多.
      在這裏我要將一個接口:OnPageChangeListener


             原理:多創建兩個屏幕,用於放在第一屏和最後一屏


       首先聲明一個變量
         private boolean isSiding = true;// 是否可滑動                       
      /***
*  init pageview
*/
void Init() {
pageViews = new ArrayList<View>();
View view00 = getLocalActivityManager().startActivity("activity01",
new Intent(this, NullActivity.class)).getDecorView();
View view01 = getLocalActivityManager().startActivity("activity01",
new Intent(this, MainActivity1.class)).getDecorView();
View view02 = getLocalActivityManager().startActivity("activity02",
new Intent(this, MainActivity2.class)).getDecorView();
View view03 = getLocalActivityManager().startActivity("activity02",
new Intent(this, MainActivity3.class)).getDecorView();
View view04 = getLocalActivityManager().startActivity("activity01",
new Intent(this, NullActivity.class)).getDecorView();
pageViews.add(view00);
pageViews.add(view01);
pageViews.add(view02);
pageViews.add(view03);
pageViews.add(view04);
}



                       //主要是這個回調方法.當頁數改變回調用,也就是當你左右滑動的時候會執行,還有一個重要的方法:pager.setCurrentItem(arg0 - 1);你要顯示那一頁的時候也會調用執行.
                      
@Override
public void onPageSelected(int arg0) {
draw_Point(arg0);//對分頁點描繪
                                //如果是第一屏或者最後一屏則禁止滑動
if (arg0 == imageViews.size() - 1 || arg0 == 0) {
if (arg0 == 0) {
pager.setCurrentItem(arg0 + 1);//第一屏向左滑動的話.
imageViews.get(1).setBackgroundResource(R.drawable.d2);
} else {
pager.setCurrentItem(arg0 - 1);//最後一屏向右滑動
imageViews.get(arg0 - 1).setBackgroundResource(
R.drawable.d2);
                                             //可以做一些禁止後的操作,友情提示等...
}
isSiding = true;
} else {
isSiding = true;
}
}


@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});


           你可以根據page生成分頁點效果如:     (分頁點)   
                      

                             1                                                      2                                                    3

                  
                        劃屏後迴歸1                            劃屏後迴歸3                      
 

                   
           
         簡單實現:
           
 //分頁點生成
void Init_Point() {
imageViews = new ArrayList<ImageView>();
ImageView imageView;
for (int i = 0; i < pageViews.size(); i++) {
imageView = new ImageView(this);
imageView.setLayoutParams(new LayoutParams(5, 5));
imageView.setBackgroundResource(R.drawable.d1);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
layoutParams.leftMargin = 20;
layoutParams.rightMargin = 20;
layout2.addView(imageView, layoutParams);
if (i == 0 || i == pageViews.size() - 1) {
imageView.setVisibility(View.GONE);
}
if (i == 1) {
imageView.setBackgroundResource(R.drawable.d2);
}
imageViews.add(imageView);


}
}
     //描繪分頁點
public void draw_Point(int index) {
for (int i = 1; i < imageViews.size(); i++) {


if (index == i) {
imageViews.get(i).setBackgroundResource(R.drawable.d2);


} else
imageViews.get(i).setBackgroundResource(R.drawable.d1);


}


}






           
             
           

發佈了11 篇原創文章 · 獲贊 2 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章