android 仿微信侧滑删除SwipeListView实例
原帖地址:http://www.eoeandroid.com/thread-540337-1-1.html
Android微信5.0以前某个版本(具体哪个忘记了)实现了和IOS上面一样的效果——侧滑删除。这个特效在github上是一个比较火的开源项目,最近楼主也对一些UI特效比较感兴趣,在收集这些炫酷又实用的实例,如果楼下那位朋友有其他比较好的实例,还请不吝赐教。
下面是楼主仿微信侧滑删除做的实例部署后的截图:
点击删除之后可以删除该行。
下面是SwipeListView属性的一些讲解:
- <com.fortysevendeg.swipelistview.SwipeListView
- xmlns:swipe="http://schemas.android.com/apk/res-auto"//命名空间
- android:id="@+id/example_lv_list
- android:listSelector="#00000000"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- swipe:swipeFrontView="@+id/front"//swipelistview顶部viewgroup(实例截图中包含人物、头像、时间的layout) swipe:swipeBackView="@+id/back"//swipelistview背后的viewgroup(实例截图中包删除按钮的layout)
- swipe:swipeActionLeft="[reveal | dismiss]"//设置向左滑动是当前别滑动item的显示效果(reveal显示背后的viewgroup,dismiss该item消失) swipe:swipeActionRight="[reveal | dismiss]"//同向左滑动
- swipe:swipeMode="[none | both | right | left]"//设置swipelistview无滑动效果,两侧均可滑动,向右滑动,向左滑动 swipe:swipeCloseAllItemsWhenMoveList="[true | false]"//swipelistview滚动时关闭所有已打开的item swipe:swipeOpenOnLongPress="[true | false]"//长按某个item是否打开 swipe:swipeAnimationTime="[miliseconds]"//动画持续时间 swipe:swipeOffsetLeft="[dimension]"//滑动后顶部viewgroup距离左边界距离 swipe:swipeOffsetRight="[dimension]" />
复制代码
在上源码之前,必须要向各位说明的是,使用第三方开源项目必需要引入相应的jar包或者项目,SwipeListView必须依赖开源swipelistview项目以及nineoldandroids-2.4.0.jar,我在后面的附件会提供这些第三方工具。当你在开发自己的swipelistview实例之前,需要把开源项目swipelistview先导入你的工程目录,然后勾选iIs Library,之后新建你自己的项目,在项目中引入这个开源项目OK了。具体的如何引入这里不做赘述,相信接触过开发的基本都懂。 下面是MainActivity.java
- package com.swipe.activity;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Toast;
- import com.fortysevendeg.swipelistview.BaseSwipeListViewListener;
- import com.fortysevendeg.swipelistview.SwipeListView;
- public class MainActivity extends Activity {
- private SwipeListView mSwipeListView;
- private SwipeListViewAdapter adapter;
- private List<TestData> datas;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main_layout);
- mSwipeListView=(SwipeListView) findViewById(R.id.example_lv_list);
- mSwipeListView.setOffsetLeft(this.getResources().getDisplayMetrics().widthPixels*2/3);
- // mSwipeListView.setSwipeMode(SwipeListView.SWIPE_MODE_LEFT);
- // mSwipeListView.setSwipeActionLeft(SwipeListView.SWIPE_ACTION_REVEAL);
- // mSwipeListView.setAnimationTime(0);
- // mSwipeListView.setSwipeOpenOnLongPress(false);
- initDatas();
- adapter=new SwipeListViewAdapter(this, mSwipeListView, datas);
- mSwipeListView.setAdapter(adapter);
- mSwipeListView.setSwipeListViewListener(new BaseSwipeListViewListener(){
- @Override
- public void onClickFrontView(int position) {
- super.onClickFrontView(position);
- mSwipeListView.closeOpenedItems();
- Toast.makeText(MainActivity.this, adapter.getItem(position).getTime()+getTitle()+"和你对话", 2400).show();
- }
- @Override
- public void onDismiss(int[] reverseSortedPositions) {
- super.onDismiss(reverseSortedPositions);
- for (int i : reverseSortedPositions) {
- datas.remove(i);
- }
- adapter.notifyDataSetChanged();
- }
- });
- }
- private void initDatas(){
- datas=new ArrayList<TestData>();
- TestData td1=new TestData("张三", "2014-7-11");
- datas.add(td1);
- TestData td2=new TestData("李四", "2014-3-18");
- datas.add(td2);
- TestData td3=new TestData("王五", "2013-11-11");
- TestData td4=new TestData("白素", "2013-7-11");
- TestData td5=new TestData("卫斯理", "2013-5-20");
- TestData td6=new TestData("曹操", "2013-2-14");
- TestData td7=new TestData("刘备", "2012-8-15");
- TestData td8=new TestData("孙权", "2012-7-7");
- TestData td9=new TestData("董卓", "2012-2-14");
- TestData td10=new TestData("王允", "2011-10-1");
- TestData td11=new TestData("貂蝉", "2011-7-7");
- datas.add(td3);
- datas.add(td4);
- datas.add(td5);
- datas.add(td6);
- datas.add(td7);
- datas.add(td8);
- datas.add(td9);
- datas.add(td10);
- datas.add(td11);
- }
- }
复制代码
下面是MainActiivty.java的布局文件main_layout.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <com.fortysevendeg.swipelistview.SwipeListView
- xmlns:swipe="http://schemas.android.com/apk/res-auto"
- android:id="@+id/example_lv_list"
- android:listSelector="#00000000"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- swipe:swipeFrontView="@+id/front"
- swipe:swipeBackView="@+id/back"
- swipe:swipeActionLeft="reveal"
- swipe:swipeActionRight="reveal"
- swipe:swipeMode="left"
- swipe:swipeCloseAllItemsWhenMoveList="true"
- swipe:swipeOpenOnLongPress="false"
- swipe:swipeAnimationTime="1"
- swipe:swipeOffsetLeft="0dip"
- swipe:swipeOffsetRight="0dp"
- />
- </LinearLayout>
复制代码
下面是swipelistview自定义item package_row.xml
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <RelativeLayout
- android:id="@+id/back"
- android:tag="back"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:background="#eee"
- android:gravity="right">
- <Button
- android:id="@+id/delete"
- android:layout_width="wrap_content"
- android:layout_height="50dp"
- android:background="#FF0000"
- android:layout_alignParentRight="true"
- android:text="刪除"/>
- </RelativeLayout>
- <RelativeLayout
- android:id="@+id/front"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:gravity="center_vertical"
- android:background="#ffffff"
- android:tag="front" >
- <ImageView
- android:id="@+id/head_icon"
- android:layout_width="45dp"
- android:layout_height="45dp"
- android:layout_marginLeft="20dp"
- android:background="@drawable/ic_launcher"
- android:scaleType="fitXY" />
- <TextView
- android:id="@+id/nickname"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textStyle="bold"
- android:textColor="@android:color/black"
- android:layout_toRightOf="@id/head_icon"
- android:layout_alignTop="@id/head_icon"
- android:textSize="18sp"/>
- <TextView android:id="@+id/time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_alignParentBottom="true"
- android:layout_marginRight="20dp"
- android:layout_marginBottom="5dp"
- />
- </RelativeLayout>
- </FrameLayout>
复制代码
最后给出github中SwipeListView的连接 SwpieListView GitHub地址
项目源码,我给出的源码已经包含第三方开源组件,希望自己写出测试实例的可以直接使用
PS:源码请到原帖http://www.eoeandroid.com/thread-540337-1-1.html下载
android 仿微信侧滑删除SwipeListView实例相关推荐
- android微信右滑删除,Android实现微信侧滑删除当前页面
本文实例为大家分享了微信侧滑删除当前页面的具体代码,供大家参考,具体内容如下 效果图不是太明显 实际上有finish动画 代码 package com.finddreams.slidingback.u ...
- Android自定义ListView实现仿微信侧滑删除
经常在遇到问题第一时间都会在网上搜索解决的方法,因此看到很多前辈们的比较精辟的技术文章,学习了很多东西,现在将自己平时工作中开发的一些小功能坐下总结,也写出来,既方便自己理清思路记忆功能块实现思路,又 ...
- android高仿微信下拉有页面,Android——(仿微信聊天界面布局实例)
今天看郭霖<第一行代码>书上写了一个聊天窗体的小例子,自己就练习学了一下.加上一些自己的理解整理了一下. 1.第一步首先是制作9.patch图片,这个在android sdk 目录下to ...
- android右滑返回动画,Android仿微信右滑返回功能的实例代码
先上效果图,如下: 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现. ...
- android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...
最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...
- android 仿微信demo————注册功能完善添加头像功能(移动端)
android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...
- android高仿微信小视频,Android仿微信录制小视频
本文实例为大家分享了Android仿微信录制小视频的具体代码,供大家参考,具体内容如下 先上张图片看看效果 简单叙述下 首先通过Camera类调用系统相机 通过surfaceview绘制出来 通过Me ...
- php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果
Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...
- android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...
Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...
最新文章
- java gc的工作原理、如何优化GC的性能、如何和GC进行有效的交互
- nodejs中的异步流程序控制nsync
- gnome3增加自定义程序快捷方式
- SD功能增强业务说明书
- 4、Angular JS 学习笔记 – 创建自定义指令 [翻译中]
- jdk 细粒度锁_使用JDK 8轻松进行细粒度排序
- 工作总结16:多看官网
- XidianOJ 1123 K=1 Problem of Orz Pandas
- TensorFlow HOWTO 1.1 线性回归
- mysql自定义函数to_date_mysql 之 str_to_date ()函数 和date_format()函数
- 操作系统—基本知识(细致版)
- IOS:UI设计之UISegmentedControl相关基础
- 微信小程序模板消息(带流程图)
- 生成对抗网络及其应用
- 实验六 有源滤波器
- 【2019年04月23日】股市指数估值排名
- 《强化学习周刊》第65期:Neurips2022强化学习论文推荐(5)、MIT:机器狗当守门员、具身智能与机器人研讨会...
- Java日志系列——概述,JUL
- 数据结构(1)—— 数据结构的三大结构
- Java中的IO技术使用总结
热门文章
- linux task进程跟踪,如何对Hadoop作业的某个task进行debug单步跟踪
- 每天一道LeetCode-----链表排序,要求复杂度在O(nlogn)
- mac m1下编译spring框架
- java里的主线程和子线程以及finally不会执行的特殊情况
- Xcode 真机调试 iOS 应用的各种问题和解决方法
- the vmware authorization service is not running
- px4官网调参指南 多旋翼无人机PID调参指南
- git提交项目到已存在的远程分支
- 2019牛客暑期多校训练营(第四场)I - String (后缀自动机+回文树)
- cuda,nvidia-driver ,cudnn下载地址及版本对应