亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android ViewPager相冊橫向移動的實現方法

2020-04-11 12:29:34
字體:
來源:轉載
供稿:網友

當我們第一次下載QQ并且打開的時候,會有一個新手引導,引導是幾張圖片,再加上一些文字說明,向右滑動,直到結束,今天一大早起來研究了一下關于此種效果的實現之ViewPager控件。

下面這個例子將用ViewPager實現橫向移動相冊,ViewPager有一個對應的PagerAdapter,用于綁定數據;我們需要繼承此類并實現自己的功能。

1、首先定義一個顯示項所需要使用的數據對象ImageItem

復制代碼 代碼如下:

public class ImageItem {
 private int id;// 資源id
 private String name;// 顯示的名稱
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public ImageItem(int id, String name) {
  super();
  this.id = id;
  this.name = name;
 }
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
}

2、ViewPager中每一面為一個Item,所以在layout目錄下定義一個ViewPager的每一頁的Item,名為pageritem.xml

復制代碼 代碼如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

  <ImageView
    android:id="@+id/imgview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:contentDescription="@string/app_name"
    android:scaleType="fitXY" />

  <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal" />

</FrameLayout>

3、新建一個java文件,對應ViewPager的每一項Item

復制代碼 代碼如下:

public class ViewpagerItem extends FrameLayout {
 private ImageView imageview;// 顯示圖片的ImageView
 private TextView textview;
 private Bitmap bitmap;// 圖片對應的Bitmap
 private ImageItem imageitem;// 每一個圖片項對象

 public ViewpagerItem(Context context) {
  super(context);
  setViews();
 }
 public ViewpagerItem(Context context, AttributeSet attrs) {
  super(context, attrs);
  setViews();
 }

 public void setData(ImageItem item) {// 用ImageItem填充數據
  this.imageitem = item;
  int resid = item.getId();
  String name = item.getName();
  imageview.setImageResource(resid);
  textview.setText(name);
 }

 public void reload() {// 重新載入數據
  int resid = imageitem.getId();
  imageview.setImageResource(resid);
 }

 public void recycle() {// 回收數據
  imageview.setImageBitmap(null);
  if (this.bitmap == null || this.bitmap.isRecycled()) {
   return;
  }
  this.bitmap.recycle();
  this.bitmap = null;
 }

 public void setViews() {
  LayoutInflater infalter = LayoutInflater.from(getContext());
  View view = infalter.inflate(R.layout.pageritem, null);
  textview = (TextView) view.findViewById(R.id.textView);
  imageview = (ImageView) view.findViewById(R.id.imgview);

  addView(view);
 }
}

4、新建一個數據填充器PagerItemAdapter,繼承自PagerAdapter

復制代碼 代碼如下:

public class PagerItemAdapter extends PagerAdapter {
 private Context context;
 private ImageItem[] image;

 public PagerItemAdapter(Context context, ImageItem[] image) {
  this.context = context;
  this.image = image;
  hashMap = new HashMap<Integer, ViewpagerItem>();
 }

 private HashMap<Integer, ViewpagerItem> hashMap;// 保存相片的id以及對應的ViewpagerItem

 @Override
 public int getCount() {
  return image.length;
 }

 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  return arg0 == arg1;
 }

 @Override
 public void finishUpdate(ViewGroup container) {
  super.finishUpdate(container);
 }

 @Override// 初始化一個ViewpagerItem,如果已經存在就重新載入,沒有的話new一個
 public Object instantiateItem(ViewGroup container, int position) {
  ViewpagerItem item;
  if (hashMap.containsKey(position)) {
   item = hashMap.get(position);
   item.reload();
  } else {
   item = new ViewpagerItem(context);
   ImageItem itemimg = image[position];
   item.setData(itemimg);
   hashMap.put(position, item);
   ((ViewPager) container).addView(item);
  }
  return item;
 }

 @Override// 當我們左右滑動圖片的時候會將圖片回收掉
 public void destroyItem(View container, int position, Object object) {
  ViewpagerItem item = (ViewpagerItem) object;
  item.recycle();
 }
}

5、在main.xml文件中添加一個ViewPager控件

復制代碼 代碼如下:

<android.support.v4.view.ViewPager
  android:id="@+id/viewpager"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" />

6、修改MainActivity如下:

復制代碼 代碼如下:

public class MainActivity extends Activity {
 private final static int RES[] = { R.drawable.p1, R.drawable.p2 };// p1,p2為drawable文件夾下的兩張圖片
 private ViewPager viewpager;
 private PagerItemAdapter adapter;
 private ImageItem[] item;

 private void setView(){
  item = new ImageItem[2];
  item[0] = new ImageItem(RES[0], "page1");
  item[1] = new ImageItem(RES[1], "page2");
  viewpager = (ViewPager) findViewById(R.id.viewpager);
  adapter = new PagerItemAdapter(getApplicationContext(), item);
  viewpager.setAdapter(adapter);
 }

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  setView();
 }
}


 運行程序,左右滑動屏幕出現如下效果!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩亚洲国产中文字幕| 欧美老女人在线视频| 欧美综合在线第二页| 久久久久这里只有精品| 国产999精品久久久影片官网| 亚洲白虎美女被爆操| 国产精品久久久久久一区二区| 国产裸体写真av一区二区| 国产精品日韩在线一区| 欧美性xxxx极品hd欧美风情| 91在线视频免费| 日韩av电影国产| 亚洲精品第一国产综合精品| 91日本在线视频| 欧美大尺度电影在线观看| 欧美理论在线观看| 81精品国产乱码久久久久久| 日韩视频在线免费| 97超级碰碰碰| 永久免费精品影视网站| 久久99精品视频一区97| 亚洲人成在线免费观看| 91麻豆国产精品| 久久91亚洲精品中文字幕| 亚洲精品资源美女情侣酒店| 日韩国产欧美精品在线| 久久久综合免费视频| 日韩在线欧美在线国产在线| 国产欧美日韩视频| 欧美极品美女电影一区| 亚洲自拍偷拍区| 国产成人精品一区二区| 亚洲欧美日本精品| 色琪琪综合男人的天堂aⅴ视频| 国产精品久久久久久久久久| 亚洲视频第一页| 日韩中文字幕精品视频| 国产精品欧美激情| 成人黄色在线观看| 国产精品久久久久久久久久久久| 538国产精品一区二区免费视频| 亚洲激情视频网站| 91免费的视频在线播放| 久久伊人91精品综合网站| 亚洲电影免费观看高清| 亚洲一区二区三区四区在线播放| 亚洲一区制服诱惑| 国产+成+人+亚洲欧洲| 国产精品免费久久久久影院| 欧美成人久久久| 欧美福利视频网站| 成人亚洲欧美一区二区三区| 亚洲欧美国产制服动漫| 精品久久久国产精品999| 欧美黄色片视频| 这里只有精品视频在线| 日韩精品极品在线观看| 日韩av在线免费| 亚洲wwwav| 久久久精品一区二区| 久久久99免费视频| 欧美成人剧情片在线观看| 欧美在线视频网| 色综合久久久久久中文网| 精品久久久久国产| 国产精品精品视频| 日韩有码片在线观看| 欧美在线视频一区| 欧美日韩午夜剧场| 日韩国产在线播放| 色综合天天狠天天透天天伊人| 中文字幕欧美日韩va免费视频| 国产日产欧美精品| 亚洲在线www| 国产精品1区2区在线观看| 欧美黑人又粗大| 亚洲欧美中文在线视频| 日韩电影中文字幕一区| 青青草一区二区| 国产亚洲a∨片在线观看| 久久亚洲精品毛片| 久久综合电影一区| 国产精品丝袜一区二区三区| 国产精品老女人视频| 亚洲色图美腿丝袜| 奇米影视亚洲狠狠色| 国产精品狼人色视频一区| 久久99视频免费| 亚洲天堂免费视频| 精品亚洲一区二区三区在线观看| 久热在线中文字幕色999舞| 国产精品丝袜高跟| 久久久精品国产网站| 91精品国产网站| 国产精品亚洲美女av网站| 欧美午夜片在线免费观看| 亚洲精品在线观看www| 久久久人成影片一区二区三区| 亚洲欧美日韩综合| 亚洲免费电影在线观看| 色爱av美腿丝袜综合粉嫩av| 97婷婷涩涩精品一区| 国产精品久久久久久久av大片| 国产日韩欧美视频在线| 5566日本婷婷色中文字幕97| 国产视频综合在线| 一区二区三区精品99久久| 成人做爽爽免费视频| 欧美性做爰毛片| 亚洲国产美女精品久久久久∴| 亚洲成人网在线观看| 亚洲国产精品va| 国产在线拍揄自揄视频不卡99| 国产欧美日韩中文字幕在线| 精品日韩美女的视频高清| 亚洲欧美激情另类校园| 欧美理论在线观看| 51视频国产精品一区二区| 日韩在线一区二区三区免费视频| 亚洲一区二区三区视频| 亚洲国产精品yw在线观看| 亚洲天堂网站在线观看视频| 2019亚洲日韩新视频| 91人人爽人人爽人人精88v| 欧美午夜www高清视频| 色视频www在线播放国产成人| 国产精品一区二区三区成人| 久久久女人电视剧免费播放下载| 国产一区二区三区毛片| 插插插亚洲综合网| 国产一区av在线| 91美女片黄在线观| 国语自产精品视频在线看抢先版图片| 成人黄色网免费| 一区二区三区视频在线| 97视频在线观看视频免费视频| 久久夜精品香蕉| 国产一区二区三区欧美| 欧美性猛交xxxx免费看久久久| 91在线视频导航| 欧美成aaa人片免费看| 亚洲精品美女视频| 8050国产精品久久久久久| 黑人巨大精品欧美一区免费视频| 国产精品日韩在线一区| 精品国产乱码久久久久久婷婷| 色七七影院综合| 日韩中文字幕不卡视频| 欧美精品免费在线| 亚洲人午夜色婷婷| 97视频免费看| 亚洲国产精品电影| 97精品国产97久久久久久免费| 国产在线拍偷自揄拍精品| 国产午夜精品视频| 日韩av理论片| 日日摸夜夜添一区| 色偷偷亚洲男人天堂| 久久久亚洲成人| 欧美尺度大的性做爰视频| 成人黄色影片在线| 日本电影亚洲天堂| 热99精品里视频精品| 欧美日韩在线免费观看|