1. 程式人生 > >android 圖片輪播

android 圖片輪播

implementation 'com.github.bumptech.glide:glide:4.3.1'//圖片輪播引入的外部依賴包com.bigkoo:convenientbanner:2.0.5依賴的包
implementation 'com.bigkoo:convenientbanner:2.0.5'//圖片輪播引入的外部依賴包
android studio

Gradle 4.1

Android plugin version 3.0.1


package com.test.banner;

import android.app.Activity;
import android.content.Context;
import 
android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import com.bigkoo.convenientbanner.ConvenientBanner; import com.bigkoo.convenientbanner.holder.CBViewHolderCreator; import com.bigkoo.convenientbanner.holder.Holder; import
com.bigkoo.convenientbanner.listener.OnItemClickListener; import java.lang.reflect.Field; import java.util.List; import java.util.ArrayList; public class MainActivity extends Activity implements ViewPager.OnPageChangeListener, OnItemClickListener { private ConvenientBanner convenientBanner;//輪播器
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showBanner(); } private void showBanner() { List<Integer> images=new ArrayList<>(); images.add(getResourceId("first",R.drawable.class));//獲取drawable路徑下以layer1命名的圖片的id images.add(getResourceId("second",R.drawable.class)); images.add(getResourceId("default1",R.drawable.class)); convenientBanner = findViewById(R.id.convenientBanner); convenientBanner.setPages(new CBViewHolderCreator<BannerImageHolderView>() { @Override public BannerImageHolderView createHolder() { return new BannerImageHolderView(); } }, images) .setPageIndicator(new int[]{R.mipmap.home_ic_page_indicator, R.mipmap.home_ic_page_indicator_focused})//設定頁面指示器 .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL);//設定水平輪播圖片 convenientBanner.setOnPageChangeListener(this); convenientBanner.setOnItemClickListener(this); convenientBanner.notifyDataSetChanged(); } public class BannerImageHolderView implements Holder<Integer> { private ImageView imageView; @Override public View createView(Context context) { imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);//設定圖片檢視的顯示大小樣式 imageView.setImageResource(R.drawable.default1);//暫時預設播放的圖片 return imageView; } /** * 實現本地圖片輪播 * @param context * @param position * @param ad 圖片資源id */ @Override public void UpdateUI(Context context, int position, Integer ad) { imageView.setImageResource(ad);//用資源id來設定圖片資源 } } /** * 通過檔名獲取資源id的例子,如getResourceId("picterName",R.drawable.class) * @param pictureName * @param tClass * @return */ public static int getResourceId(String pictureName,Class<?> tClass) { try { Field idField = tClass.getDeclaredField(pictureName); return idField.getInt(idField); } catch (Exception e) { e.printStackTrace(); return -1; } } /** * 頁面改變事件方法 * This method will be invoked when the current page is scrolled, either as part * of a programmatically initiated smooth scroll or a user initiated touch scroll. * * @param position Position index of the first page currently being displayed. * Page position+1 will be visible if positionOffset is nonzero. * @param positionOffset Value from [0, 1) indicating the offset from the page at position. * @param positionOffsetPixels Value in pixels indicating the offset from position. */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /** * 頁面改變事件方法 * This method will be invoked when a new page becomes selected. Animation is not * necessarily complete. * * @param position Position index of the new selected page. */ @Override public void onPageSelected(int position) { Toast.makeText(this,"選擇第"+position+"頁圖片",Toast.LENGTH_SHORT).show(); } /** * 頁面改變事件方法 * Called when the scroll state changes. Useful for discovering when the user * begins dragging, when the pager is automatically settling to the current page, * or when it is fully stopped/idle. * * @param state The new scroll state. * @see ViewPager#SCROLL_STATE_IDLE * @see ViewPager#SCROLL_STATE_DRAGGING * @see ViewPager#SCROLL_STATE_SETTLING */ @Override public void onPageScrollStateChanged(int state) { Toast.makeText(this,"頁面滾動狀態被改變"+state,Toast.LENGTH_SHORT); } // 實現activity的繼續方法,實現圖片輪播開始自動翻頁 @Override protected void onResume() { super.onResume(); //開始自動翻頁 convenientBanner.startTurning(5000); } // 停止自動翻頁 @Override protected void onPause() { super.onPause(); //停止翻頁 convenientBanner.stopTurning(); } @Override public void onItemClick(int position) { } }

 

<?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    <com.bigkoo.convenientbanner.ConvenientBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/convenientBanner"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        app:canLoop="true" />


    </LinearLayout>