码迷,mamicode.com
首页 > 其他好文 > 详细

QQ好友列表向左滑动出现置顶、删除--第三方开源--SwipeMenuListView

时间:2015-11-25 19:11:45      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

SwipeMenuListView是在github上的第三方开源项目,该项目在github上的链接地址是:https://github.com/baoyongzhang/SwipeMenuListView 。

下载后直接将项目包复制粘贴到需要的项目当中:

技术分享

测试代码:

item.xml:

技术分享
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <ImageView
 7         android:id="@+id/imageView"
 8         android:layout_width="60dp"
 9         android:layout_height="60dp"
10         android:src="@drawable/ic_launcher" />
11 
12     <TextView
13         android:id="@+id/textView"
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:layout_alignBottom="@+id/imageView"
17         android:layout_alignParentRight="true"
18         android:layout_alignParentTop="true"
19         android:layout_toRightOf="@+id/imageView"
20         android:gravity="center"
21         android:textSize="20sp" />
22 
23 </RelativeLayout>
item.xml

activity_main.xml:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5 
 6     <com.baoyz.swipemenulistview.SwipeMenuListView
 7         android:id="@+id/listView"
 8         android:layout_width="match_parent"
 9         android:layout_height="match_parent" />
10 
11 </LinearLayout>

MainActivity.java:

  1 package com.zzw.testswipemenulistview;
  2 
  3 import java.util.ArrayList;
  4 
  5 import com.baoyz.swipemenulistview.SwipeMenu;
  6 import com.baoyz.swipemenulistview.SwipeMenuCreator;
  7 import com.baoyz.swipemenulistview.SwipeMenuItem;
  8 import com.baoyz.swipemenulistview.SwipeMenuListView;
  9 import com.baoyz.swipemenulistview.SwipeMenuListView.OnMenuItemClickListener;
 10 import com.baoyz.swipemenulistview.SwipeMenuListView.OnSwipeListener;
 11 
 12 import android.app.Activity;
 13 import android.content.Context;
 14 import android.graphics.Color;
 15 import android.graphics.drawable.ColorDrawable;
 16 import android.os.AsyncTask;
 17 import android.os.Bundle;
 18 import android.os.Handler;
 19 import android.os.Message;
 20 import android.util.Log;
 21 import android.view.LayoutInflater;
 22 import android.view.View;
 23 import android.view.ViewGroup;
 24 import android.widget.ArrayAdapter;
 25 import android.widget.TextView;
 26 import android.widget.Toast;
 27 
 28 public class MainActivity extends Activity {
 29 
 30     private ArrayList<String> datas;
 31     private ArrayAdapter adapter;
 32     private SwipeMenuListView listView;
 33     private Handler handler;
 34 
 35     @Override
 36     protected void onCreate(Bundle savedInstanceState) {
 37         super.onCreate(savedInstanceState);
 38         setContentView(R.layout.activity_main);
 39 
 40         handler = new Handler() {
 41             @Override
 42             public void handleMessage(Message msg) {
 43                 if (msg.what == 0) {
 44 
 45                     int position = (Integer) msg.obj;
 46                     String str = datas.get(position);
 47                     datas.remove(position);
 48                     datas.add(0, str);
 49                     adapter.notifyDataSetChanged();
 50                     Toast.makeText(getApplicationContext(), "置顶成功", 0).show();
 51 
 52                 } else if (msg.what == 1) {
 53 
 54                     Toast.makeText(getApplicationContext(), "打开", 0).show();
 55 
 56                 } else if (msg.what == 2) {
 57 
 58                     int position = (Integer) msg.obj;
 59                     datas.remove(position);
 60                     adapter.notifyDataSetChanged();
 61                     Toast.makeText(getApplicationContext(), "成功删除", 0).show();
 62 
 63                 }
 64             }
 65         };
 66 
 67         // 添加测试数据
 68         datas = new ArrayList<String>();
 69         for (int i = 0; i <= 50; i++) {
 70             datas.add("测试数据-->" + i);
 71         }
 72 
 73         adapter = new MyAdapter(this, -1);
 74 
 75         SwipeMenuCreator creator = new SwipeMenuCreator() {
 76 
 77             @Override
 78             public void create(SwipeMenu menu) {
 79                 // 设置置顶的菜单按钮,设置了图标和标题
 80                 SwipeMenuItem top = new SwipeMenuItem(getApplicationContext());
 81                 top.setBackground(new ColorDrawable(Color.LTGRAY));
 82                 top.setWidth(dp2px(90));
 83                 top.setTitle("置顶");
 84                 top.setTitleSize(20);
 85                 top.setIcon(R.drawable.ic_top);
 86                 top.setTitleColor(Color.RED);
 87                 menu.addMenuItem(top);
 88 
 89                 // 设置进入的菜单按钮,只设置了标题
 90                 SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());
 91                 openItem.setBackground(new ColorDrawable(Color.GREEN));
 92                 openItem.setWidth(dp2px(90));
 93                 openItem.setTitle("打开");
 94                 openItem.setTitleSize(20);
 95                 openItem.setTitleColor(Color.WHITE);
 96                 menu.addMenuItem(openItem);
 97 
 98                 // 设置删除的菜单按钮,只设置了图标
 99                 SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext());
100                 deleteItem.setWidth(dp2px(90));
101                 deleteItem.setBackground(new ColorDrawable(Color.RED));
102                 deleteItem.setIcon(R.drawable.ic_delete);
103                 menu.addMenuItem(deleteItem);
104             }
105         };
106 
107         listView = (SwipeMenuListView) findViewById(R.id.listView);
108         listView.setMenuCreator(creator);
109 
110         // 设置点击不同菜单时触法的事件
111         listView.setOnMenuItemClickListener(new OnMenuItemClickListener() {
112 
113             @Override
114             public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
115                 // index的值就是在SwipeMenu依次添加SwipeMenuItem顺序值,类似数组的下标。
116                 // 从0开始,依次是:0、1、2、3...
117                 switch (index) {
118                 case 0:
119                     //使菜单平滑的关闭
120                     listView.smoothCloseMenu();
121 
122                     Message msg0 = handler.obtainMessage();
123                     msg0.what = 0;
124                     msg0.obj = position;
125                     //过1秒后发送,为了体现出菜单平滑关闭的效果
126                     handler.sendMessageDelayed(msg0,1000);
127                     String str = datas.get(position);
128 
129                     break;
130                 case 1:
131                     
132                     Message msg1 = handler.obtainMessage();
133                     msg1.what = 1;
134                     msg1.obj = position;
135                     handler.sendMessage(msg1);
136 
137                     break;
138                 case 2:
139                     listView.smoothCloseMenu();
140                     
141                     Message msg2 = handler.obtainMessage();
142                     msg2.what = 2;
143                     msg2.obj = position;
144                     handler.sendMessageDelayed(msg2, 1000);
145 
146                     break;
147                 }
148                 // false : 当用户触发其他地方的屏幕时候,自动收起菜单。
149                 // true : 不改变已经打开菜单的样式,保持原样不收起。
150                 return false;
151             }
152         });
153 
154         // 监测用户在ListView的SwipeMenu侧滑事件。
155         listView.setOnSwipeListener(new OnSwipeListener() {
156 
157             @Override
158             public void onSwipeStart(int position) {
159                 Log.d("位置:--" + position, "开始发生侧滑");
160             }
161 
162             @Override
163             public void onSwipeEnd(int position) {
164                 Log.d("位置:--" + position, "开始发生侧滑");
165             }
166         });
167 
168         listView.setAdapter(adapter);
169     }
170 
171     private class MyAdapter extends ArrayAdapter {
172 
173         LayoutInflater inflater;
174 
175         public MyAdapter(Context context, int resource) {
176             super(context, resource);
177             inflater = LayoutInflater.from(context);
178         }
179 
180         @Override
181         public int getCount() {
182             return datas.size();
183         }
184 
185         @Override
186         public View getView(int position, View convertView, ViewGroup parent) {
187             if (convertView == null) {
188                 convertView = inflater.inflate(R.layout.item, null);
189             }
190 
191             TextView textView = (TextView) convertView.findViewById(R.id.textView);
192             textView.setText(datas.get(position));
193 
194             return convertView;
195         }
196 
197     }
198 
199     public int dp2px(float dipValue) {
200         final float scale = this.getResources().getDisplayMetrics().density;
201         return (int) (dipValue * scale + 0.5f);
202     }
203 }

 

QQ好友列表向左滑动出现置顶、删除--第三方开源--SwipeMenuListView

标签:

原文地址:http://www.cnblogs.com/zzw1994/p/4995421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!