listview侧滑菜单

来源:互联网 发布:比特币挖矿程序 mac 编辑:程序博客网 时间:2024/05/16 04:57
github项目地址:https://github.com/baoyongzhang/SwipeMenuListView

虽然不知道listview能不能仍然被广大用户喜欢  会不会被recycleView 取代
使用方式
添加包依赖  compile 'com.baoyz.swipemenulistview:library:1.3.0'  (module的build.gradle)

添加 listview样式 

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    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="@mipmap/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>

所需添加的layout中添加

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

package com.example.try.github_ui;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.support.v7.app.AppCompatActivity;import android.util.TypedValue;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;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.SwipeMenuListView;import java.util.List;public class MainActivity extends AppCompatActivity {    private List<ApplicationInfo> mAppList;    private AppAdapter mAdapter;    private SwipeMenuListView mListView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mAppList = getPackageManager().getInstalledApplications(0);        mListView = (SwipeMenuListView) findViewById(R.id.listView);        mAdapter = new AppAdapter();        mListView.setAdapter(mAdapter);        // step 1. create a MenuCreator        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 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.delete);                // add to menu                menu.addMenuItem(deleteItem);            }        };        // set creator        mListView.setMenuCreator(creator);        // step 2. listener item click event        mListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {                ApplicationInfo item = mAppList.get(position);                switch (index) {                    case 0:                        // open                        open(item);                        break;                    case 1:                        // delete//                  delete(item);                        mAppList.remove(position);                        mAdapter.notifyDataSetChanged();                        break;                }                return false;            }        });        // set SwipeListener        mListView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {            @Override            public void onSwipeStart(int position) {                // swipe start            }            @Override            public void onSwipeEnd(int position) {                // swipe end            }        });        // set MenuStateChangeListener        mListView.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener() {            @Override            public void onMenuOpen(int position) {            }            @Override            public void onMenuClose(int position) {            }        });        // other setting//      listView.setCloseInterpolator(new BounceInterpolator());        // test item long click        mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {            @Override            public boolean onItemLongClick(AdapterView<?> parent, View view,                                           int position, long id) {                Toast.makeText(getApplicationContext(), position + " long click", Toast.LENGTH_SHORT).show();                return false;            }        });    }    private void delete(ApplicationInfo item) {        // delete app        try {            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 app        Intent 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 {        @Override        public int getCount() {            return mAppList.size();        }        @Override        public ApplicationInfo getItem(int position) {            return mAppList.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public 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()));            holder.iv_icon.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Toast.makeText(MainActivity.this, "iv_icon_click", Toast.LENGTH_SHORT).show();                }            });            holder.tv_name.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Toast.makeText(MainActivity.this,"iv_icon_click",Toast.LENGTH_SHORT).show();                }            });            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());    }}


0 0