<microrock>

microrock

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件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中实现,谢谢
posted on 2016-09-01 14:04  microrock  阅读(2399)  评论(0编辑  收藏  举报