• 使用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中实现,谢谢
  • 相关阅读:
    SQLDirect 6.5 Source (Delphi 5-10.1 Berlin)
    中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
    底层库
    An Overview of Complex Event Processing2
    linux动态库编译和使用
    gulp
    Web前端性能优化
    ECLIPSE JSP TOMCAT 环境搭建
    项目架构mvc+webapi
    HTTP/1.1
  • 原文地址:https://www.cnblogs.com/zhangdiIT/p/5829589.html
Copyright © 2020-2023  润新知