Android實戰簡易教程-第十四槍(介紹SwipeMenuListView-簡單實作類別似QQ的滑動刪除效果),swipemenulistview
1.實現布局檔案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" tools:context="${relativePackage}.${activityClass}" > <com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
2.listview中item的布局檔案:
<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="wrap_content" android:padding="8dp" > <ImageView android:id="@+id/iv_icon" android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/iv_icon" android:text="name" android:textColor="@android:color/black" android:textSize="18sp" /></RelativeLayout>
3.實現Activity:
package com.baoyz.swipemenulistviewsample;import java.util.List;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.pm.ApplicationInfo;import android.content.pm.ResolveInfo;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.net.Uri;import android.os.Bundle;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.baoyz.swipemenulistview.SwipeMenu;import com.baoyz.swipemenulistview.SwipeMenuCreator;import com.baoyz.swipemenulistview.SwipeMenuItem;import com.baoyz.swipemenulistview.SwipeMenuLayout;import com.baoyz.swipemenulistview.SwipeMenuListView;import com.baoyz.swipemenulistview.SwipeMenuListView.OnMenuItemClickListener;import com.baoyz.swipemenulistview.SwipeMenuListView.OnSwipeListener;public class SimpleActivity extends Activity {private List<ApplicationInfo> mAppList;private AppAdapter mAdapter;private SwipeMenuListView mListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_list);mAppList = getPackageManager().getInstalledApplications(0);//擷取資料mListView = (SwipeMenuListView) findViewById(R.id.listView);mAdapter = new AppAdapter();mListView.setAdapter(mAdapter);// step 1. create a MenuCreatorSwipeMenuCreator creator = new SwipeMenuCreator() {@Overridepublic void create(SwipeMenu menu) {// create "open" itemSwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext());// set item backgroundopenItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,0xCE)));// set item widthopenItem.setWidth(dp2px(90));// set item titleopenItem.setTitle("Open");// set item title fontsizeopenItem.setTitleSize(18);// set item title font coloropenItem.setTitleColor(Color.WHITE);// add to menumenu.addMenuItem(openItem);// create "delete" itemSwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext());// set item backgrounddeleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,0x3F, 0x25)));// set item widthdeleteItem.setWidth(dp2px(90));// set a icondeleteItem.setIcon(R.drawable.ic_delete);// add to menumenu.addMenuItem(deleteItem);}};// set creatormListView.setMenuCreator(creator);// step 2. listener item click eventmListView.setOnMenuItemClickListener(new OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(int position, SwipeMenu menu, int index) {ApplicationInfo item = mAppList.get(position);switch (index) {case 0:// openopen(item);break;case 1:// delete//delete(item);mAppList.remove(position);mAdapter.notifyDataSetChanged();break;}return false;}});// set SwipeListenermListView.setOnSwipeListener(new OnSwipeListener() {@Overridepublic void onSwipeStart(int position) {// swipe start}@Overridepublic void onSwipeEnd(int position) {// swipe end}});// other setting//listView.setCloseInterpolator(new BounceInterpolator());// test item long clickmListView.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {Toast.makeText(getApplicationContext(), position + " long click", 0).show();return false;}});}/*private void delete(ApplicationInfo item) {// delete apptry {Intent intent = new Intent(Intent.ACTION_DELETE);intent.setData(Uri.fromParts("package", item.packageName, null));startActivity(intent);} catch (Exception e) {}}*/private void open(ApplicationInfo item) {// open appIntent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(item.packageName);List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);if (resolveInfoList != null && resolveInfoList.size() > 0) {ResolveInfo resolveInfo = resolveInfoList.get(0);String activityPackageName = resolveInfo.activityInfo.packageName;String className = resolveInfo.activityInfo.name;Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName componentName = new ComponentName(activityPackageName, className);intent.setComponent(componentName);startActivity(intent);}}class AppAdapter extends BaseAdapter {//填充Item所用的adapter@Overridepublic int getCount() {return mAppList.size();}@Overridepublic ApplicationInfo getItem(int position) {return mAppList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = View.inflate(getApplicationContext(),R.layout.item_list_app, null);new ViewHolder(convertView);}ViewHolder holder = (ViewHolder) convertView.getTag();ApplicationInfo item = getItem(position);holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));holder.tv_name.setText(item.loadLabel(getPackageManager()));return convertView;}class ViewHolder {ImageView iv_icon;TextView tv_name;public ViewHolder(View view) {iv_icon = (ImageView) view.findViewById(R.id.iv_icon);tv_name = (TextView) view.findViewById(R.id.tv_name);view.setTag(this);}}}private int dp2px(int dp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,getResources().getDisplayMetrics());}}4.運行執行個體:
點擊刪除即可刪除選中項。
總結1.
public void create(SwipeMenu menu)
建立滑動菜單
2.
mListView.setMenuCreator(creator);
喜歡的朋友,歡迎點贊關注,謝謝!