本次demo是借鉴的:http://www.cnblogs.com/exmyth/p/4606187.html

本例子实现了滑动删除ListView的Itemdemo的效果、大家都知道、这种创意是来源于IOS的、左滑删除的功能、在Android上面实现比较 麻烦、本例子中不仅实现了左滑删除功能、还实现了左滑赞、左滑分享、左滑收藏等功能、当然大家也可以根据自己项目的需求来修改功能、QQ和微信也实现了相同的功能、大家可以看看。

大神已经把需要的自定义控件都封装成类,我只是做了一下简单的了解,以及使用,时间有限,并没有仔细研究.

工程目录如下leftDelete、diffeentLeftDelete是实现左滑效果的类 ,,swipemenulistview是大神封装好的类,没有太详细的说明,看着有点累,源码已经贴在本文后面了

安卓---左滑---删除

1.新建leftDelete类,(左滑的功能是封装好了的哈、上面贴出来的只是调用方法、更多使用方法、大家可以下载源代码慢慢研究)

  1 package com.example.android_listview;
  2 
  3 import java.util.List;
  4 
  5 import swipemenulistview.SwipeMenu;
  6 import swipemenulistview.SwipeMenuCreator;
  7 import swipemenulistview.SwipeMenuItem;
  8 import swipemenulistview.SwipeMenuListView;
  9 import swipemenulistview.SwipeMenuListView.OnMenuItemClickListener;
 10 import swipemenulistview.SwipeMenuListView.OnSwipeListener;
 11 
 12 import android.app.Activity;
 13 import android.content.ComponentName;
 14 import android.content.Intent;
 15 import android.content.pm.ApplicationInfo;
 16 import android.content.pm.ResolveInfo;
 17 import android.graphics.Color;
 18 import android.graphics.drawable.ColorDrawable;
 19 import android.net.Uri;
 20 import android.os.Bundle;
 21 import android.util.TypedValue;
 22 import android.view.View;
 23 import android.view.ViewGroup;
 24 import android.widget.AdapterView;
 25 import android.widget.AdapterView.OnItemLongClickListener;
 26 import android.widget.BaseAdapter;
 27 import android.widget.ImageView;
 28 import android.widget.TextView;
 29 import android.widget.Toast;
 30 
 31 
 32 
 33 public class leftDelete extends Activity{
 34     private List<ApplicationInfo> mAppList;
 35     private AppAdapter mAdapter;
 36     private SwipeMenuListView mListView;
 37 
 38     @Override
 39     protected void onCreate(Bundle savedInstanceState) {
 40         super.onCreate(savedInstanceState);
 41         setContentView(R.layout.activity_list);
 42 
 43         mAppList = getPackageManager().getInstalledApplications(0);
 44 
 45         mListView = (SwipeMenuListView) findViewById(R.id.listView);
 46         mAdapter = new AppAdapter();
 47         mListView.setAdapter(mAdapter);
 48 
 49         // step 1. create a MenuCreator
 50         SwipeMenuCreator creator = new SwipeMenuCreator() {
 51 
 52             @Override
 53             public void create(SwipeMenu menu) {
 54                 // create "open" item
 55                 SwipeMenuItem openItem = new SwipeMenuItem(
 56                         getApplicationContext());
 57                 // set item background
 58                 openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
 59                         0xCE)));
 60                 // set item width
 61                 openItem.setWidth(dp2px(90));
 62                 // set item title
 63                 openItem.setTitle("Open");
 64                 // set item title fontsize
 65                 openItem.setTitleSize(18);
 66                 // set item title font color
 67                 openItem.setTitleColor(Color.WHITE);
 68                 // add to menu
 69                 menu.addMenuItem(openItem);
 70 
 71                 // create "delete" item
 72                 SwipeMenuItem deleteItem = new SwipeMenuItem(
 73                         getApplicationContext());
 74                 // set item background
 75                 deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
 76                         0x3F, 0x25)));
 77                 // set item width
 78                 deleteItem.setWidth(dp2px(90));
 79                 // set a icon
 80                 deleteItem.setIcon(R.drawable.ic_delete);
 81                 // add to menu
 82                 menu.addMenuItem(deleteItem);
 83             }
 84         };
 85         // set creator
 86         mListView.setMenuCreator(creator);
 87 
 88         // step 2. listener item click event
 89         mListView.setOnMenuItemClickListener(new OnMenuItemClickListener() {
 90             @Override
 91             public void onMenuItemClick(int position, SwipeMenu menu, int index) {
 92                 ApplicationInfo item = mAppList.get(position);
 93                 switch (index) {
 94                 case 0:
 95                     // open
 96                     open(item);
 97                     break;
 98                 case 1:
 99                     // delete
100                     //delete(item);
101                     mAppList.remove(position);
102                     mAdapter.notifyDataSetChanged();
103                     break;
104                 }
105             }
106         });
107         
108         // set SwipeListener
109         mListView.setOnSwipeListener(new OnSwipeListener() {
110             
111             @Override
112             public void onSwipeStart(int position) {
113                 // swipe start
114             }
115             
116             @Override
117             public void onSwipeEnd(int position) {
118                 // swipe end
119             }
120         });
121 
122         // other setting
123 //        listView.setCloseInterpolator(new BounceInterpolator());
124         
125         // test item long click
126         mListView.setOnItemLongClickListener(new OnItemLongClickListener() {
127 
128             @Override
129             public boolean onItemLongClick(AdapterView<?> parent, View view,
130                     int position, long id) {
131                 Toast.makeText(getApplicationContext(), position + " long click", 0).show();
132                 return false;
133             }
134         });
135         
136     }
137 
138     private void delete(ApplicationInfo item) {
139         // delete app
140         try {
141             Intent intent = new Intent(Intent.ACTION_DELETE);
142             intent.setData(Uri.fromParts("package", item.packageName, null));
143             startActivity(intent);
144         } catch (Exception e) {
145         }
146     }
147 
148     private void open(ApplicationInfo item) {
149         // open app
150         Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
151         resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
152         resolveIntent.setPackage(item.packageName);
153         List<ResolveInfo> resolveInfoList = getPackageManager()
154                 .queryIntentActivities(resolveIntent, 0);
155         if (resolveInfoList != null && resolveInfoList.size() > 0) {
156             ResolveInfo resolveInfo = resolveInfoList.get(0);
157             String activityPackageName = resolveInfo.activityInfo.packageName;
158             String className = resolveInfo.activityInfo.name;
159 
160             Intent intent = new Intent(Intent.ACTION_MAIN);
161             intent.addCategory(Intent.CATEGORY_LAUNCHER);
162             ComponentName componentName = new ComponentName(
163                     activityPackageName, className);
164 
165             intent.setComponent(componentName);
166             startActivity(intent);
167         }
168     }
169 
170     class AppAdapter extends BaseAdapter {
171 
172         @Override
173         public int getCount() {
174             return mAppList.size();
175         }
176 
177         @Override
178         public ApplicationInfo getItem(int position) {
179             return mAppList.get(position);
180         }
181 
182         @Override
183         public long getItemId(int position) {
184             return position;
185         }
186 
187         @Override
188         public View getView(int position, View convertView, ViewGroup parent) {
189             if (convertView == null) {
190                 convertView = View.inflate(getApplicationContext(),
191                         R.layout.item_list_app, null);
192                 new ViewHolder(convertView);
193             }
194             ViewHolder holder = (ViewHolder) convertView.getTag();
195             ApplicationInfo item = getItem(position);
196             holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));
197             holder.tv_name.setText(item.loadLabel(getPackageManager()));
198             return convertView;
199         }
200 
201         class ViewHolder {
202             ImageView iv_icon;
203             TextView tv_name;
204 
205             public ViewHolder(View view) {
206                 iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
207                 tv_name = (TextView) view.findViewById(R.id.tv_name);
208                 view.setTag(this);
209             }
210         }
211     }
212 
213     private int dp2px(int dp) {
214         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
215                 getResources().getDisplayMetrics());
216     }
217 }

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:andro>
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <swipemenulistview.SwipeMenuListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>
View Code

相关文章: