利用第三方开源框架 SwipeMenuListView 实现用户的左右侧滑事件

Android平台上的第三方开源项目SwipeMenuListView是一种可以在某一个view条目中响应用户左右侧滑(从左向右,或从右向左滑动),滑出操作菜单的UI控件。该项目在github上的链接地址是:https://github.com/baoyongzhang/SwipeMenuListView 。下载后,将library/ src/main/java/com/ baoyz/ swipemenulistview目录下的所有源代码文件放入自己的项目即可使用。效果如下:



activity_main.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"
    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.android.swipemenulistviewtest.MainActivity" >

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

</RelativeLayout>



MainActivity 代码如下:

package com.android.swipemenulistviewtest;

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 com.baoyz.swipemenulistview.SwipeMenuListView.OnMenuItemClickListener;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class MainActivity extends Activity {

	private SwipeMenuListView listView;
	private ArrayList<String> data;
	private ArrayAdapter<String> adapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		listView = (SwipeMenuListView)findViewById(R.id.listView);
		
		//测试的数据。  
        data = new ArrayList<String>();  
        for (int i = 0; i < 30; i++) {  
        	data.add("更新的数据:" + i);
        }  
        
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);  
        listView.setAdapter(adapter); 
        
		
		SwipeMenuCreator creator = new SwipeMenuCreator() {

		    @Override
		    public void create(SwipeMenu menu) {
		        // create "open" item
		        SwipeMenuItem openItem = new SwipeMenuItem(
		                getApplicationContext());
		        // set item background
		        openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
		                0xCE)));
		        // set item width
		        openItem.setWidth(dp2px(90));
		        // set item title
		        openItem.setTitle("Open");
		        // set a icon
		        openItem.setIcon(R.drawable.ic_action_favorite);
		        // set item title fontsize
		        openItem.setTitleSize(18);
		        // set item title font color
		        openItem.setTitleColor(Color.WHITE);
		        // add to menu
		        menu.addMenuItem(openItem);

		        // create "delete" item
		        SwipeMenuItem deleteItem = new SwipeMenuItem(
		                getApplicationContext());
		        // set item background
		        deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
		                0x3F, 0x25)));
		        // set item width
		        deleteItem.setWidth(dp2px(90));
		        // set a icon
		        deleteItem.setIcon(R.drawable.ic_delete);
		        // add to menu
		        menu.addMenuItem(deleteItem);
		    }
		};

		// set creator
		listView.setMenuCreator(creator);
		
		
		
		listView.setOnMenuItemClickListener(new OnMenuItemClickListener() {
		    @Override
		    public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
		        switch (index) {
		        case 0:
		            // open
		        	Intent intent = new Intent(MainActivity.this, SecondActivity.class);
		        	startActivity(intent);
		            break;
		        case 1:
		            // delete
		        	data.remove(position);
		        	adapter.notifyDataSetChanged();
		            break;
		        }
		        // false : close the menu; true : not close the menu
		        return false;
		    }
		});
		
	}

	public int dp2px(float dipValue) {  
        final float scale = this.getResources().getDisplayMetrics().density;  
        return (int) (dipValue * scale + 0.5f);  
    } 
}


SecondActivity 的代码如下:

package com.android.swipemenulistviewtest;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		TextView tv = new TextView(this);
		tv.setText("你已经打开了一个 Activity !");
		tv.setBackgroundColor(Color.RED);
		setContentView(tv);
	}
	
}


SecondActivity 需要在 AndroidManifest.xml 中注册:

<activity android:name=".SecondActivity"></activity>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值