android 圖片輪播
阿新 • • 發佈:2018-12-19
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; importandroid.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; importcom.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>