Android實戰簡易教程-第十四槍(介紹SwipeMenuListView-簡單實作類別似QQ的滑動刪除效果),swipemenulistview

來源:互聯網
上載者:User

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);
喜歡的朋友,歡迎點贊關注,謝謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.