用AdapterViewFlipper輕松完成圖片輪播
一、認(rèn)識(shí)AdapterViewFilpper
AdapterViewFilpper 繼承 了AdapterViewAnimator,它也會(huì)顯示 Adapter 提供的多個(gè) View 組件,但它每次只能顯示一個(gè)View組件,程序可通過showPrevious()和showNext()方法控制該組件顯示上一個(gè)、下一個(gè)組件。
AdapterViewFilpper可以在多個(gè)View切換過程中使用漸隱漸顯的動(dòng)畫效果。除此之外,還可以調(diào)用該組件的startFlipping()控制它“自動(dòng)播放”下一個(gè)View組件。
AdapterViewAnimator支持的XML屬性如下:
- android:animateFirstView:設(shè)置顯示組件的第一個(gè)View時(shí)是否使用動(dòng)畫。
- android:inAnimation:設(shè)置組件顯示時(shí)使用的動(dòng)畫。
- android:loopViews:設(shè)置循環(huán)到最后一個(gè)組件時(shí)是否自動(dòng)跳轉(zhuǎn)到第一個(gè)組件。
- android:outAnimation:設(shè)置組件隱藏時(shí)使用的動(dòng)畫。
AdapterViewFilpper額外支持的XML屬性及相關(guān)方法如下表所示。
|
XML屬性 |
相關(guān)方法 |
說明 |
|---|---|---|
|
android:autoStart |
startFlpping() |
設(shè)置顯示該組件是否自動(dòng)播放 |
|
android:flipInterval |
setFlipInterval(int) |
設(shè)置自動(dòng)播放的時(shí)間間隔 |
二、AdapterViewFilpper示例
接下來通過一個(gè)簡(jiǎn)單的示例程序來學(xué)習(xí)AdapterViewFilpper的使用方法。
繼續(xù)使用WidgetSample工程的listviewsample模塊,在app/main/res/layout/目錄下創(chuàng)建adapterview_filpper_layout.xml文件,在其中填充如下代碼片段:
<?xml version="1.0" encoding="utf-8" ?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<AdapterViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:flipInterval="5000"
android:layout_alignParentTop="true"/>
<Button
android:id="@+id/prev_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="上一個(gè)"/>
<Button
android:id="@+id/next_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="下一個(gè)"/>
<Button
android:id="@+id/auto_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="自動(dòng)播放"/>
</RelativeLayout>
創(chuàng)建一個(gè)MyFilpperAdapter類,繼承BaseAdapter類,重寫其4個(gè)主要方法,具體代碼如下:
package com.jinyu.cqkxzsxy.android.listviewsample.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
/**
* @創(chuàng)建者 鑫鱻
* @描述 Android零基礎(chǔ)入門到精通系列教程,歡迎關(guān)注微信公眾號(hào)ShareExpert
*/
public class MyFilpperAdapter extends BaseAdapter {
private Context mContext = null;
private int[] mImageIds = null;
public MyFilpperAdapter(Context context, int[] imageIds) {
this.mContext = context;
this.mImageIds = imageIds;
}
@Override
public int getCount() {
return mImageIds.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
// 該方法返回的View代表了每個(gè)列表項(xiàng)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = null;
if(null == convertView) {
// 創(chuàng)建一個(gè)ImageView
imageView = new ImageView(mContext);
// 設(shè)置ImageView的縮放類型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// 為imageView設(shè)置布局參數(shù)
imageView.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
convertView = imageView;
} else {
imageView = (ImageView) convertView;
}
// 給ImageView設(shè)置圖片資源
imageView.setImageResource(mImageIds[position]);
return imageView;
}
}
接下來為AdapterViewFilpper提供Adapter,使用自定義的BaseAdapter。新建AdapterViewFilperActivity.java文件,加載上面新建的布局文件,具體代碼如下:
package com.jinyu.cqkxzsxy.android.listviewsample;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterViewFlipper;
import android.widget.Button;
import com.jinyu.cqkxzsxy.android.listviewsample.adapter.MyFilpperAdapter;
public class AdapterViewFilperActivity extends AppCompatActivity implements View.OnClickListener {
private AdapterViewFlipper mFlipper = null;
private Button mPrevBtn = null;
private Button mNextBtn = null;
private Button mAutoBtn = null;
private int[] mImageIds = {
R.drawable.image_01,R.drawable.image_02,R.drawable.image_03,
R.drawable.image_04,R.drawable.image_05,R.drawable.image_06,
R.drawable.image_07,R.drawable.image_08,R.drawable.image_09
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.adapterview_filpper_layout);
// 獲取界面組件
mFlipper = (AdapterViewFlipper) findViewById(R.id.flipper);
mPrevBtn = (Button) findViewById(R.id.prev_btn);
mNextBtn = (Button) findViewById(R.id.next_btn);
mAutoBtn = (Button) findViewById(R.id.auto_btn);
// 為AdapterViewFlipper設(shè)置Adapter
MyFilpperAdapter adapter = new MyFilpperAdapter(this, mImageIds);
mFlipper.setAdapter(adapter);
// 為三個(gè)按鈕設(shè)置點(diǎn)擊事件監(jiān)聽器
mPrevBtn.setOnClickListener(this);
mNextBtn.setOnClickListener(this);
mAutoBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.prev_btn:
// 顯示上一個(gè)組件
mFlipper.showPrevious();
// 停止自動(dòng)播放
mFlipper.stopFlipping();
break;
case R.id.next_btn:
// 顯示下一個(gè)組件。
mFlipper.showNext();
// 停止自動(dòng)播放
mFlipper.stopFlipping();
break;
case R.id.auto_btn:
// 開始自動(dòng)播放
mFlipper.startFlipping();
break;
default:
break;
}
}
}
上面程序代碼調(diào)用了 AdapterViewFlipper 的 showPrevious()、 showNext()方法來控制該組件顯示上一個(gè)、下一個(gè)組件,并調(diào)用了 startFlipping()方法控制自動(dòng)播放。
修改程序啟動(dòng)的Activity,運(yùn)行程序,可以看到下圖所示界面效果。

單擊上一個(gè)或下一個(gè)按鈕可以切換顯示的組件,單擊自動(dòng)播放按鈕,將可以看到AdapterViewFlipper每隔5秒更換一個(gè)圖片,切換圖片時(shí)會(huì)使用漸隱漸顯效果。
至此,關(guān)于AdapterViewFlipper的簡(jiǎn)單使用學(xué)習(xí)完畢,更多屬性和方法建議多加練習(xí)并掌握。
以上就是用AdapterViewFlipper輕松完成圖片輪播的詳細(xì)內(nèi)容,更多關(guān)于AdapterViewFlipper完成圖片輪播的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Android基于AdapterViewFlipper實(shí)現(xiàn)的圖片/文字輪播動(dòng)畫控件
- Android實(shí)現(xiàn)背景圖片輪播
- Android輪播圖點(diǎn)擊圖片放大效果的實(shí)現(xiàn)方法
- Android實(shí)現(xiàn)圖片輪播列表
- 詳解android 視頻圖片混合輪播實(shí)現(xiàn)
- Android開發(fā)實(shí)現(xiàn)的自動(dòng)換圖片、輪播圖效果示例
- Android實(shí)現(xiàn)輪播圖片展示效果
- Android自定義圖片輪播Banner控件使用解析
- Android高級(jí)圖片滾動(dòng)控件實(shí)現(xiàn)3D版圖片輪播器
- Android開發(fā)使用Handler的PostDelayed方法實(shí)現(xiàn)圖片輪播功能
相關(guān)文章
Android實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
這篇文章主要介紹了Android實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果,這種效果大家經(jīng)常遇到,想知道如何實(shí)現(xiàn)的,請(qǐng)閱讀本文2016-08-08
Android 異步任務(wù) 設(shè)置 超時(shí)使用handler更新通知功能
這篇文章主要介紹了Android 異步任務(wù) 設(shè)置 超時(shí)使用handler更新通知,文中給大家提到了使用AsyncTask設(shè)置請(qǐng)求超時(shí)的注意事項(xiàng) ,需要的朋友可以參考下2017-12-12
Android利用Hero實(shí)現(xiàn)列表與詳情頁無縫切換動(dòng)畫
本文我們將利用Hero動(dòng)畫實(shí)現(xiàn)一個(gè)簡(jiǎn)單案例:實(shí)現(xiàn)列表與詳情頁無縫切換動(dòng)畫,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-06-06
Flutter 日期時(shí)間DatePicker控件及國際化
這篇文章主要介紹了Flutter 日期時(shí)間DatePicker控件及國際化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Android如何使用RecyclerView打造首頁輪播圖
這篇文章主要為大家詳細(xì)介紹了Android如何使用RecyclerView打造首頁輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android 中圖片和按鈕按下狀態(tài)變化實(shí)例代碼解析
這篇文章通過實(shí)例代碼給大家總結(jié)了android 中圖片和按鈕按下狀態(tài)變化問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-06-06
聲網(wǎng)SDK教程Android UIKit 實(shí)時(shí)視頻通話添加自定義背景
這篇文章主要為大家介紹了聲網(wǎng)SDK教程Android UIKit 實(shí)時(shí)視頻通話添加自定義背景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

