SwipeMenuListView是在github上的第三方开源项目,该项目在github上的链接地址是:https://github.com/baoyongzhang/SwipeMenuListView 。使用之前,需要导入https://github.com/baoyongzhang/SwipeMenuListView该项目的库文件,下载后,将library/ src/main/java/com/ baoyz/ swipemenulistview目录下的所有源代码文件放入自己的项目代码包中即可使用,源代码文件和包结构如图所示:
package com.example.swipemenulistview;
import java.util.ArrayList;
import com.baoyz.swipemenulistview.SwipeMenu;
import com.baoyz.swipemenulistview.SwipeMenuCreator;
import com.baoyz.swipemenulistview.SwipeMenuItem;
import com.baoyz.swipemenulistview.SwipeMenuListView;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ArrayAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
private ArrayAdapter<String> adapter;
private ArrayList<String> items;
private SwipeMenuListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
int pos = (Integer) msg.obj;
items.remove(pos);
adapter.notifyDataSetChanged();
}
};
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem openItem = new SwipeMenuItem(
getApplicationContext());
openItem.setBackground(new ColorDrawable(Color.LTGRAY));
openItem.setWidth(dp2px(60));
openItem.setTitle("置顶");
openItem.setTitleSize(15);
openItem.setTitleColor(Color.WHITE);
menu.addMenuItem(openItem);
SwipeMenuItem NoopenItem = new SwipeMenuItem(
getApplicationContext());
NoopenItem.setBackground(new ColorDrawable(Color.CYAN));
NoopenItem.setWidth(dp2px(90));
NoopenItem.setTitle("标为未读");
NoopenItem.setTitleSize(15);
NoopenItem.setTitleColor(Color.WHITE);
menu.addMenuItem(NoopenItem);
SwipeMenuItem deleteItem = new SwipeMenuItem(
getApplicationContext());
deleteItem.setBackground(new ColorDrawable(Color.RED));
deleteItem.setWidth(dp2px(60));
deleteItem.setTitle("删除");
deleteItem.setTitleSize(15);
deleteItem.setTitleColor(Color.WHITE);
menu.addMenuItem(deleteItem);
}
};
listView = (SwipeMenuListView) findViewById(R.id.listView);
listView.setMenuCreator(creator);
listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(int position, SwipeMenu menu,
int index) {
// index的值就是在SwipeMenu依次添加SwipeMenuItem顺序值,类似数组的下标
// 从0开始
switch (index) {
case 0:
Toast.makeText(getApplicationContext(), "置顶:" + position,
Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(getApplicationContext(), "标为未读:" + position,
Toast.LENGTH_SHORT).show();
break;
case 2:
// Toast.makeText(getApplicationContext(),
// "删除:"+position,Toast.LENGTH_SHORT).show();
listView.smoothCloseMenu();
Message msg = handler.obtainMessage();
msg.obj = position;
handler.sendMessageDelayed(msg, 500);
break;
}
// false : 当用户触发其他地方的屏幕时候,自动收起菜单。
// true : 不改变已经打开菜单的样式,保持原样不收起。
return false;
}
});
// 测试数据集。
items = new ArrayList<String>();
for (int i = 0; i < 50; i++) {
items.add("测试数据:" + i);
}
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
}
private int dp2px(float dipValue) {
final float scale = this.getResources().getDisplayMetrics().density;
return (int) (dipValue * scale + 0.5f);
}
}
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.swipemenulistview.MainActivity" >
<com.baoyz.swipemenulistview.SwipeMenuListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>