前言: 大家好,今天給大家介紹安卓一種特別實用有很酷炫的組件swipecard,當然這並不是安卓爸爸創造的,這是國內的一個我認為是大牛的一個人隨便寫着玩兒搞出來了,我看了他的代碼介紹已經很清晰了,但是對於剛入門學安卓的同學們來說理解還是得需要一定的時間,於是在這里我就給大家把他的代碼給精簡一下步驟,希望能給大家一些幫助。
(圖片無法上傳所以導致圖片不可見,大家可以點擊我的有道鏈接查看 http://note.youdao.com/noteshare?id=ef7292c53d507cd0e1f3b15abb518e48)
1、導入:
第一步:首先大家需要去GitHub上去下載這個組件的壓縮包然后解壓,解壓點開文件后應該是下圖這種效果(圖片不顯示,就是一個文件夾):

第二步:導入Module,在file的目錄下選擇new選擇import

然后點擊出現下圖界面,在瀏覽你第一步下載的文件夾選擇library然后點擊完成

添加依賴:在file文件目錄下的project structure里選擇你的APP,選擇depedence目錄
點擊加號選擇第二個Module depedence選擇lib目錄下點擊選擇添加依賴,點擊完成

至此我們對於導入Module的工作已經完成了,下面就是實現組件的效果了:
2、使用:
第一步:首先我們要明白,這是一個組件,類似於ListView的一個組件,所以第一步就是在xml文件中生成它

第二步:因為與ListView相似,所以這個組件也需要適配器,下面我們就要自定義一個適配器,但是需要繼承的不是BaseAdapter而是繼承咱們導入的那個Module里的BaseCardAdapter,看下面代碼:(每個方法都已經有了注釋,大家應該都看的明白)
1 package com.jereh.biyingapplication.adapter; 2 3 import android.content.Context; 4 import android.view.View; 5 import android.widget.ImageView; 6 7 import com.bumptech.glide.Glide; 8 import com.huxq17.swipecardsview.BaseCardAdapter; 9 import com.jereh.biyingapplication.entity.CardImg; 10 import com.jereh.biyingapplication.*; 11 import java.util.List; 12 13 /** 14 * Created by zhangdi on 2016/8/31. 15 */ 16 public class MyAdapter extends BaseCardAdapter { 17 private List<CardImg> datas; 18 private Context context; 19 20 public MyAdapter(List<CardImg> datas, Context context) { 21 this.datas = datas; 22 this.context = context; 23 } 24 /** 25 * 獲取卡片的數量 26 * 27 * @return 28 */ 29 @Override 30 public int getCount() { 31 if (datas.size()<1){ 32 return 0; 33 }else { 34 return datas.size(); 35 } 36 37 } 38 39 /** 40 * 獲取卡片view的layout id 41 * 42 * @return 43 */ 44 @Override 45 public int getCardLayoutId() { 46 return R.layout.card_item; 47 } 48 49 /** 50 * 將卡片和數據綁定在一起 51 * 52 * @param position 數據在數據集中的位置 53 * @param cardview 要綁定數據的卡片 54 */ 55 @Override 56 public void onBindData(int position, View cardview) { 57 if (datas == null || datas.size() == 0) { 58 return; 59 } 60 ImageView imageView = 61 (ImageView) cardview.findViewById(R.id.lv_img); 62 CardImg img = datas.get(position); 63 Glide.with(context) 64 .load(img.getImg()) 65 .crossFade() 66 .centerCrop() 67 .into(imageView); 68 } 69 70 /** 71 * 獲取可見的cardview的數目,默認是3 72 * @return 73 */ 74 @Override 75 public int getVisibleCardCount() { 76 return datas.size(); 77 } 78 }
第三步:現在已經有了適配器,布局中也已經有了組件,剩下要做的就是在java代碼中把他們關聯起來並給添加數據以及對各種事件做監聽了:
1 swipeCardsView = 2 (SwipeCardsView)view.findViewById(R.id.swipCardsView); 3 //設置滑動監聽 4 swipeCardsView 5 .setCardsSlideListener(new SwipeCardsView.CardsSlideListener() { 6 @Override 7 public void onShow(int index) { 8 Log.i("test showing index = ", "" + index); 9 } 10 11 @Override 12 public void onCardVanish(int index, SwipeCardsView.SlideType type) { 13 String orientation = ""; 14 switch (type) { 15 case LEFT: 16 orientation = "向左飛出"; 17 break; 18 case RIGHT: 19 orientation = "向右飛出"; 20 break; 21 } 22 } 23 24 @Override 25 public void onItemClick(View cardImageView, int index) { 26 27 } 28 });
下面就是定義各種事件的方法以及關聯適配器展示界面的方法:(其中mList是數據)
1 /** 2 * 卡片向左邊飛出 3 */ 4 public void doLeftOut() { 5 swipeCardsView.slideCardOut(SwipeCardsView.SlideType.LEFT); 6 } 7 /** 8 * 卡片向右邊飛出 9 */ 10 public void doRightOut() { 11 swipeCardsView.slideCardOut(SwipeCardsView.SlideType.RIGHT); 12 } 13 /** 14 * 顯示cardsview 15 */ 16 private void show() { 17 if (adapter == null) { 18 adapter = new MyAdapter(mList, getActivity()); 19 swipeCardsView.setAdapter(adapter); 20 } else { 21 swipeCardsView.notifyDatasetChanged(mList.indexOf(mList)); 22 } 23 }
至此這個組件已經完全配置完成,簡單吧,希望我的筆記能對大家有所幫助,更希望大家能在自己的APP中實現,謝謝