Android 輪播圖Banner的簡單實現
阿新 • • 發佈:2018-12-22
輪播圖已經出來很長時間了,我也看了很多部落格,看了很多的人程式碼,也有自己寫原生的,也有用第三方框架的,學習安卓有一段時間了,決定寫一寫部落格來記錄自己的安卓學習生涯,不管以前有沒有古人寫過,反正我是這個來者哈哈哈;廢話不多說了,進入正文吧。
Banner的簡單使用步驟:
第一步 新增依賴:
compile 'com.youth.banner:banner:1.4.9'
第二步 網路許可權:
//如果你的圖片源是從網路來的,那你就添加個網路許可權。
<uses-permission android:name="android.permission.INTERNET" />
//要記得讀取許可權也不可少哦
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
第三步 在佈局檔案中新增banner元件:
//當然寬高可以自己設定。這裡只是舉個栗子
<com.youth.banner.Banner
android:id="@+id/main_banner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
第四步 重寫圖片載入器:
//我個人習慣用Glide,所以用Glide寫的,當然大家如果喜歡其他的可以用其他的,我在這裡不做任何侷限
import android.content.Context;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.youth.banner.loader.ImageLoader;
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
@Override
public ImageView createImageView(Context context) {
ImageView imageView = new ImageView(context);
return imageView;
}
}
第五步 使用Banner:
該有的配置完了,就該真正的使用啦!等了很久了吧。
public class MainActivity extends Activity {
Banner banner;//banner元件
List mlist;//圖片資源
List<String> mlist1;//輪播標題
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化兩個集合,圖片資源可以是本地,也可以是網路的url
mlist = new ArrayList<>();
mlist.add(R.drawable.bingxue);
mlist.add(R.drawable.fpcard);
mlist.add(R.drawable.gggg);
mlist.add(R.drawable.peng);
mlist1 = new ArrayList<>();
mlist1.add("123231");
mlist1.add("123231");
mlist1.add("123231");
mlist1.add("123231");
banner = findViewById(R.id.main_banner);
banner.setImageLoader(new GlideImageLoader()); //設定圖片載入器
banner.setImages(mlist);//設定圖片源
banner.setBannerTitles(mlist1);//設定標題源
banner.setDelayTime(1500);//設定輪播事件,單位毫秒
banner.setBannerAnimation(Transformer.Stack);//設定輪播動畫,動畫種類很多,有興趣的去試試吧,我在這裡用的是預設
/**
* 輪播圖的點選事件
*/
banner.setOnBannerListener(new OnBannerListener() {
@Override
public void OnBannerClick(int position) {
Toast.makeText(MainActivity.this, "xiaoguo" + position, Toast.LENGTH_SHORT).show();
}
});
banner.setIndicatorGravity(BannerConfig.CENTER);//設定指示器的位置
banner.start();//開始輪播,一定要呼叫此方法。
}
第六步 為了增強使用者的體驗:
@Override
protected void onResume() {
super.onResume();
banner.start();
}
@Override
protected void onStop() {
super.onStop();
banner.stopAutoPlay();
}
Banner的簡單實現就說到這裡,很簡單,但是很強大,也很實用,可以滿足一般的輪播需求。謝謝!