使用swipecard實現卡片視圖左右滑動監聽以及點擊監聽


 前言: 大家好,今天給大家介紹安卓一種特別實用有很酷炫的組件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中實現,謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM