Android(安卓)第三方开源SwipeToDismiss:左滑/右滑删除ListView条目Item
16lz
2021-01-24
Android的SwipeToDismiss是github上一个第三方开源框架(github上的项目链接地址: https://github.com/romannurik/Android-SwipeToDismiss )。该开源项目旨在:使得一个ListView的item在用户的手指在屏幕上左滑或者右滑时候,删除当前的这个ListView Item。
此种特效在新版的Android中应用不少,比如在Android 5.0及以上版本中,通知栏下拉菜单中的条目,就是这种操作效果,用户把通知栏下拉出来,手指轻触某一项,左滑或者右滑,删除(清除)此项。
在 https://github.com/romannurik/Android-SwipeToDismiss 上下载到到库文件有两个(此说是基于截止2015年7月27日的版本,后续版本也许会有所不同):SwipeDismissListViewTouchListener.java 和 SwipeDismissTouchListener.java 。如果只是打算简单的只是支持一个ListView列表中item左滑/右滑删除,那么仅仅只导入SwipeDismissListViewTouchListener.java这一个库文件即可。
此种特效在新版的Android中应用不少,比如在Android 5.0及以上版本中,通知栏下拉菜单中的条目,就是这种操作效果,用户把通知栏下拉出来,手指轻触某一项,左滑或者右滑,删除(清除)此项。
在 https://github.com/romannurik/Android-SwipeToDismiss 上下载到到库文件有两个(此说是基于截止2015年7月27日的版本,后续版本也许会有所不同):SwipeDismissListViewTouchListener.java 和 SwipeDismissTouchListener.java 。如果只是打算简单的只是支持一个ListView列表中item左滑/右滑删除,那么仅仅只导入SwipeDismissListViewTouchListener.java这一个库文件即可。
现在就给出一个简单例子,说明如何改造一个标准ListView,使其支持左右滑动某个item然后删除之。
效果如图:
java代码如下:
package com.example.swipetodismiss;import java.util.ArrayList;import java.util.List;import com.example.android.swipedismiss.SwipeDismissListViewTouchListener;import com.example.android.swipedismiss.SwipeDismissListViewTouchListener.DismissCallbacks;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity {private ListView list_view;private List<String> list;private ArrayAdapter<String> adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);list_view = (ListView) findViewById(R.id.list_view);list = new ArrayList<String>();for (int i = 0; i < 30; i++) {list.add("测试数据" + i);}adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);list_view.setAdapter(adapter);// 将ListView传递过来。SwipeDismissListViewTouchListener swipeListener = new SwipeDismissListViewTouchListener(list_view,new DismissCallbacks() {// 此处将执行删除,记得要notifyDataSetChanged()。@Overridepublic void onDismiss(ListView listView, int[] reverseSortedPositions) {for (int pos : reverseSortedPositions) {list.remove(pos);}adapter.notifyDataSetChanged();}@Overridepublic boolean canDismiss(int position) {return true;}});list_view.setOnTouchListener(swipeListener);}}
更多相关文章
- android 自定义RadioButton样式
- android中Spinner特效
- Android高手进阶教程(十)之----Android(安卓)PopupWindow的使用!
- Android(安卓)RecyclerView之添加Item分割线
- android保存文件到SD卡中
- @SuppressLint("NewApi")作用
- Android(安卓)studio 更新只显示"Download”的解决办法
- Android(安卓)Studio:依赖包的版本号
- Android自定义动画专题一