前言: 大家好,今天给大家介绍安卓一种特别实用有很酷炫的组件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 }
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 });
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 }