Android使用SwipeMenuListView第三方控件实现QQ中消息水平作用滑动删除置顶
来源:互联网 发布:jenkins mac 安装包 编辑:程序博客网 时间:2024/06/04 20:03
在23code上http://www.23code.com/swipemenulistview/,看类似qq消息列表中,当你进行水平滑动item时,可进行一些置顶删除等操作的效果:
通过使用第三方开源组件SwipeMenuListView,可以实现这种效果,开源代码可以https://github.com/baoyongzhang/SwipeMenuListView下载
之后将library中类复制到自己的项目中,或引用到自己的项目中,此处复制到自己的项目里。
先看下效果图:
接着对第三方开源组件进行使用:
布局文件:activity_list.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <com.example.swipemenulistview.code.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>item_list.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" > <ImageView android:id="@+id/iv_icon" android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/iv_icon" android:text="name" android:textColor="@android:color/black" android:textSize="18sp" /></RelativeLayout>java代码:
package com.example.swipemenulistview;import java.util.List;import com.example.swipemenulistview.code.SwipeMenu;import com.example.swipemenulistview.code.SwipeMenuCreator;import com.example.swipemenulistview.code.SwipeMenuItem;import com.example.swipemenulistview.code.SwipeMenuListView;import com.example.swipemenulistview.code.SwipeMenuListView.OnMenuItemClickListener;import com.example.swipemenulistview.code.SwipeMenuListView.OnSwipeListener;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.ResolveInfo;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.net.Uri;import android.os.Bundle;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import android.view.animation.BounceInterpolator;import android.widget.AdapterView;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class SimpleActivity extends Activity {private List<ApplicationInfo> mAppList;private AppAdapter mAdapter;private SwipeMenuListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list);mAppList = getPackageManager().getInstalledApplications(0);mListView = (SwipeMenuListView) findViewById(R.id.listView);mAdapter = new AppAdapter();mListView.setAdapter(mAdapter);// step 1. create a MenuCreatorSwipeMenuCreator creator = new SwipeMenuCreator() {@Overridepublic void create(SwipeMenu menu) {// create "open" itemSwipeMenuItem topItem = new SwipeMenuItem(getApplicationContext());// set item backgroundtopItem.setBackground(new ColorDrawable(Color.YELLOW));// set item widthtopItem.setWidth(dp2px(90));// set item titletopItem.setTitle("置顶");// set item title fontsizetopItem.setTitleSize(18);// set item title font colortopItem.setTitleColor(Color.WHITE);// add to menumenu.addMenuItem(topItem);SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());// set item backgroundopenItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,0xCE)));// set item widthopenItem.setWidth(dp2px(90));// set item titleopenItem.setTitle("Open");// set item title fontsizeopenItem.setTitleSize(18);// set item title font coloropenItem.setTitleColor(Color.WHITE);// add to menumenu.addMenuItem(openItem);// create "delete" itemSwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext());// set item background//deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,//0x3F, 0x25)));deleteItem.setBackground(new ColorDrawable(Color.RED));// set item widthdeleteItem.setWidth(dp2px(90));// set a icondeleteItem.setIcon(R.drawable.ic_delete);// add to menumenu.addMenuItem(deleteItem);}};// set creatormListView.setMenuCreator(creator);// step 2. listener item click eventmListView.setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic void onMenuItemClick(int position, SwipeMenu menu, int index) {// TODO Auto-generated method stubApplicationInfo item = mAppList.get(position);switch (index) {case 0:// 置顶mAppList.remove(position);mAppList.add(0, item);mAdapter.notifyDataSetChanged();break;case 1:// openopen(item);break;case 2:// deletedelete(item);mAppList.remove(position);mAdapter.notifyDataSetChanged();break;}}});mListView.setOnSwipeListener(new OnSwipeListener() {@Overridepublic void onSwipeStart(int position) {// swipe start}@Overridepublic void onSwipeEnd(int position) {// swipe end}});// other setting//mListView.setCloseInterpolator(new BounceInterpolator());// test item long clickmListView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {Toast.makeText(getApplicationContext(), position + " long click", 0).show();return false;}});}private void delete(ApplicationInfo item) {// delete apptry {Intent intent = new Intent(Intent.ACTION_DELETE);intent.setData(Uri.fromParts("package", item.packageName, null));startActivity(intent);} catch (Exception e) {}} private void open(ApplicationInfo item) {// open appIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(item.packageName);List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);if (resolveInfoList != null && resolveInfoList.size() > 0) {ResolveInfo resolveInfo = resolveInfoList.get(0);String activityPackageName = resolveInfo.activityInfo.packageName;String className = resolveInfo.activityInfo.name;Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName componentName = new ComponentName(activityPackageName, className);intent.setComponent(componentName);startActivity(intent);}}class AppAdapter extends BaseAdapter {@Overridepublic int getCount() {return mAppList.size();}@Overridepublic ApplicationInfo getItem(int position) {return mAppList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = View.inflate(getApplicationContext(),R.layout.item_list_app, null);new ViewHolder(convertView);}ViewHolder holder = (ViewHolder) convertView.getTag();ApplicationInfo item = getItem(position);holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));holder.tv_name.setText(item.loadLabel(getPackageManager()));return convertView;}class ViewHolder {ImageView iv_icon;TextView tv_name;public ViewHolder(View view) {iv_icon = (ImageView) view.findViewById(R.id.iv_icon);tv_name = (TextView) view.findViewById(R.id.tv_name);view.setTag(this);}}}private int dp2px(int dp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,getResources().getDisplayMetrics());}}
点击下载
0 0
- Android使用SwipeMenuListView第三方控件实现QQ中消息水平作用滑动删除置顶
- Android之仿QQ消息SwipeMenuListView滑动删除置顶
- Android 第三方开源SwipeMenuListView(QQ侧滑置顶,删除)
- QQ好友列表向左滑动出现置顶、删除--第三方开源--SwipeMenuListView
- Android基于SwipeMenuListView实现滑动删除功能
- 仿QQlistView滑动删除---使用SwipeMenuListView实现
- Android实战简易教程<十四>(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- Android使用第三方控件实现侧滑删除
- 仿qq横向滑动删除的 SwipeMenuListView
- Android实战简易教程-第十四枪(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- Android使用SwipeMenuListView 高仿QQ、微信侧滑删除--详解
- VB中利用第三方控件实现QQ垂直菜单
- android自定义控件SlidingButtonView实现类似QQ滑动删除效果
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Android-使用Android Studio实现第三方QQ登录
- Q&A
- JDK+ECLIPSE+TOMCAT配置 (win7)
- 加载plist到模型数组
- Java 创建和销毁对象
- Excel冻结窗格
- Android使用SwipeMenuListView第三方控件实现QQ中消息水平作用滑动删除置顶
- 【bzoj3685】【普通van Emde Boas树】【线段树】
- 怎么样才能使你的项目更加顺利呢
- 额
- Swift学习- 方法(十一)
- Spark ML Pipelines实例
- 【SQLite关系型数据库管理系统】SQLite命令
- 【读书笔记】iOS-GCD-GCD与perfomSelector系方法比较
- 【Java数据结构】二分查找