模仿最新版愛奇藝卡片式輪播效果CardBannerDemo
阿新 • • 發佈:2018-12-22
本文介紹了一款模仿最新版愛奇藝卡片式輪播lib
CardBannerDemo
效果圖
Attributes屬性(佈局檔案中的自定義屬性)
變數名 | 型別 | 說明 |
---|---|---|
main_title_text_color | color | 主標題文字顏色(預設白色) |
subtitle_title_text_color | color | 副標題(不設定預設為白色) |
divider_width | dimension | 卡片之間的間隔 |
main_title_text_size | dimension | 主標題字型大小 |
subtitle_title_text_size | dimension | 副標題字型大小 |
border_width | dimension | 左右卡片展示的寬度 |
方法
方法名 | 說明 |
---|---|
setDatas | 使用原生卡片設定資料(必須使用lib中的ImageData新建集合) |
setDataCount | (使用自定義item)設定資料集合大小(配合setBannerAdapter使用) |
setBannerAdapter | (使用自定義item) 設定自定義item的Adapter(配合setDataCount使用) |
setDelayTime | 設定自動輪播時間間隔(單位毫秒,預設為2000) |
類
ImageData.class 原生item的資料集合實體類
BannerViewHolder.class 自定義item實現ViewHolder的被繼承類
使用
###新增依賴
Gradle
dependencies{
compile 'com.xuezj.cardbanner:cardbanner:1.0.0'
}
###工程中使用
佈局檔案中的使用
<com.xuezj.cardbanner.CardBanner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="180dp" app:divider_width="10dp" app:main_title_text_color="#fff" app:subtitle_title_text_color="#fff" app:main_title_text_size="15dp" app:subtitle_title_text_size="12dp" app:border_width="30dp"/>
程式碼中呼叫
1.原生
List<ImageData> imageData = new ArrayList<>(); ImageData b1 = new ImageData(); b1.setImage("http://ww1.sinaimg.cn/large/610dc034ly1fhyeyv5qwkj20u00u0q56.jpg"); b1.setMainTitle("第一張圖片"); imageData.add(b1); ImageData b2 = new ImageData(); b2.setImage("https://ws1.sinaimg.cn/large/610dc034gy1fhvf13o2eoj20u011hjx6.jpg"); b2.setSubtitleTitle("23-7期"); imageData.add(b2); ImageData b3 = new ImageData(); b3.setImage("http://ww1.sinaimg.cn/large/610dc034ly1fhxe0hfzr0j20u011in1q.jpg"); imageData.add(b3); //2.然後呼叫setDatas方法填充資料,再start()就可以了, // 是否自動輪播setPlay可以不設定,預設為自動輪播即為ture cardBanner.setDatas(imageData).setPlay(true).start(); cardBanner.setOnItemClickListener(new CardBanner.OnItemClickListener() { @Override public void onItem(int position) { Toast.makeText(MainActivity.this, "position:" + position, Toast.LENGTH_SHORT).show(); } });
2.自定義item
final List<String> image=new ArrayList<>(); image.add("http://ww1.sinaimg.cn/large/610dc034ly1fhyeyv5qwkj20u00u0q56.jpg"); image.add("https://ws1.sinaimg.cn/large/610dc034gy1fhvf13o2eoj20u011hjx6.jpg"); image.add("http://ww1.sinaimg.cn/large/610dc034ly1fhxe0hfzr0j20u011in1q.jpg"); cardBanner2.setDataCount(imageData.size()).setBannerAdapter(new BannerAdapter() { @Override public BannerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { ViewHolder h = new ViewHolder(LayoutInflater.from(MainActivity.this) .inflate(R.layout.banner_item_demo, parent, false)); return h; } @Override public void onBindViewHolder(BannerViewHolder holder, int position) { ViewHolder VH = (ViewHolder) holder; Glide.with(MainActivity.this) .load(image.get(position)).centerCrop() .diskCacheStrategy(DiskCacheStrategy.ALL) // .bitmapTransform(new CropCircleTransformation(getContext())) .into(VH.roundedImageView); } }); cardBanner2.start(); cardBanner2.setOnItemClickListener(new CardBanner.OnItemClickListener() { @Override public void onItem(int position) { Toast.makeText(MainActivity.this, "position:" + position, Toast.LENGTH_SHORT).show(); } });