国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android ViewPager相冊橫向移動的實現(xiàn)方法

2020-02-21 17:34:00
字體:
供稿:網(wǎng)友

當我們第一次下載QQ并打開它的時候,會有一個新手引導,引導圖片都會加上一些文字說明,向右滑動直到結(jié)束,下面是武林技術(shù)頻道小編為大家介紹的Android ViewPager相冊橫向移動的實現(xiàn)方法,一起進入下文了解一下吧!

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

1、首先定義一個顯示項所需要使用的數(shù)據(jù)對象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

復制代碼 代碼如下:

  android:layout_width="match_parent"
  android:layout_height="match_parent" >

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

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

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填充數(shù)據(jù)
this.imageitem = item;
int resid = item.getId();
String name = item.getName();
imageview.setImageResource(resid);
textview.setText(name);
}

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

public void recycle() {// 回收數(shù)據(jù)
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、新建一個數(shù)據(jù)填充器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();
}
,>

private HashMap 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,如果已經(jīng)存在就重新載入,沒有的話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: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();
}
}


運行程序,左右滑動屏幕出現(xiàn)如下效果!

上文是Android ViewPager相冊橫向移動的實現(xiàn)方法,相信大家都有了一定的了解,想要了解更多的技術(shù)信息,請繼續(xù)關(guān)注武林技術(shù)頻道吧!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 太康县| 买车| 高清| 宜黄县| 汝州市| 中西区| 疏附县| 高雄县| 辉县市| 赣州市| 斗六市| 阿拉善左旗| 常熟市| 盈江县| 晋江市| 安多县| 昌图县| 鄱阳县| 海盐县| 门源| 齐齐哈尔市| 凤冈县| 会泽县| 防城港市| 名山县| 汨罗市| 德惠市| 科技| 屯昌县| 读书| 建德市| 西贡区| 乌拉特中旗| 鹤壁市| 平乐县| 宽城| 佛教| 独山县| 雷山县| 临高县| 华安县|