您的位置:首页 > 移动开发 > Android开发

仿qq列表侧滑删除

2016-06-13 16:46 357 查看
最近做项目,有一类似qq列表侧滑删除的需求,有一点不同的是当条目滑出来的时候,条目有箭头指示,如下:



先说一下实现思路,在网上找了一个开源控件,自己修改了一下代码实现的,


参考:https://github.com/baoyongzhang/SwipeMenuListView

在这里感谢作者的贡献。

主要部分代码:

一、设置监听,itemMenu。

private void initUiAndListener() {
// TODO Auto-generated method stub
mListView = (SlideAndDragListView) findViewById(R.id.lv_edit);
mListView.setMenu(mMenuList);
mListView.setAdapter(mAdapter);
//        mListView.setOnListScrollListener(this);
//        mListView.setOnItemCloseListener(this);
mListView.setOnSlideListener(this);
mListView.setOnMenuItemClickListener(this);
//        mListView.setOnListItemLongClickListener(this);
mListView.setOnListItemClickListener(this);

}

private void initMenu() {
// TODO Auto-generated method stub
mMenuList = new ArrayList<Menu>(2);
Menu menu0 = new Menu(false,false,0);
menu0.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_btn2_width))
.setBackground(new ColorDrawable(Color.RED))
.setText("删除")
.setDirection(MenuItem.DIRECTION_RIGHT)
.setTextColor(Color.WHITE)
.build());
menu0.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_btn2_width))
.setBackground(new ColorDrawable(Color.GRAY))
.setText("添加")
.setDirection(MenuItem.DIRECTION_RIGHT)
.setTextColor(Color.WHITE)
.build());

Menu menu1 = new Menu(true,false,1);
menu1.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_btn2_width))
.setBackground(new ColorDrawable(Color.RED))
.setText("删除")
.setDirection(MenuItem.DIRECTION_RIGHT)
.setTextColor(Color.WHITE)
.build());
menu1.addItem(new MenuItem.Builder().setWidth((int) getResources().getDimension(R.dimen.slv_item_bg_btn2_width))
.setBackground(new ColorDrawable(Color.GRAY))
.setText("查看")
.setDirection(MenuItem.DIRECTION_RIGHT)
.setTextColor(Color.GREEN)
.build());

mMenuList.add(menu0);
mMenuList.add(menu1);
}


二、对item滑出时的监听做处理

@Override
public void onSlideOpen(View view, View parentView, int position, int direction) {
Log.e(TAG,"onSlideOpen:position --" + position + "---direction---" +direction);
ImageView img = (ImageView) view.findViewById(R.id.imageView1);
img.setImageBitmap(rotateImg(R.drawable.ic_left_arrow, 180));
}

@Override
public void onSlideClose(View view, View parentView, int position, int direction) {
Log.e(TAG,"onSlideClose:position --" + position + "---direction---" +direction);
ImageView img = (ImageView) view.findViewById(R.id.imageView1);
img.setImageBitmap(rotateImg(R.drawable.ic_left_arrow, 0));
}

/**
* @param id 资源引用
* @param degress 旋转角度
* @return bitmap   employ: XXX.setImageDrawable(bitmap)
*/
private Bitmap rotateImg(int id, float degress){
Bitmap bitmap= BitmapFactory.decodeResource(getResources(), id);
//创建操作图片是用的matrix对象
Matrix matrix=new Matrix();
matrix.setRotate(degress);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
return bitmap;
}


若需要详细的代码,请移步下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息