Github上的Android项目介绍之ListViewAnimation(针对listView item的侧滑菜单)(1)
2015-04-13 17:55
302 查看
demo源码,需要可以下载
1.这是一个github开源项目,先去github上面下载,github下载地址。
2.将SwipeMenuListView项目,导入,然后新建项目如果要引用,要设置为相应的lid应用,如图勾选。
3.activity_main.xml 的布局文件代码:
<com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" />
主要是加入这个控件。
4.item_list_app.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="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>
5.加入ic_delete.png图片。
6.定义扩展自BaseAdapter的adapter,用来提供列表数据。
同时重写swipeMenu的回调方法,主要是实现SwipeMenuCreator 这个类的create()方法,和相应的OnMenuItemClickListener接口。至于数据来源则是List类型的,是由 getPackageManager().getInstalledApplications(0); 方法获得。
如果要重用这个代码,需要实现SwipeMenuCreator 类和相应的OnMenuItemClickListener接口。
主要代码如下:
public class MainActivity extends Activity { 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); 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.ic_delete); // add to menu menu.addMenuItem(deleteItem); } }; // set creator mListView.setMenuCreator(creator); mListView.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { switch (index) { case 0: // open Toast.makeText(getApplicationContext(), "Open", Toast.LENGTH_SHORT).show(); break; case 1: // delete Toast.makeText(getApplicationContext(), "Delete", Toast.LENGTH_SHORT).show(); // mAppList.remove(position); // mAdapter.notifyDataSetChanged(); break; } // false : close the menu; true : not close the menu return false; } }); } 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())); 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()); } }
。
相关文章推荐
- Github上的Android项目介绍之ListViewAnimation(针对listView item的侧滑菜单)(1)
- Github上的Android项目介绍之ListViewAnimation(针对listView item的侧滑菜单)(1)
- Android高手进阶篇4-实现侧滑菜单框架,一分钟集成到项目中
- GitHub 优秀的 Android 开源项目 - listview相关
- Android高手进阶篇4-实现侧滑菜单框架,一分钟集成到项目中
- Android 开源项目浅读-------SwipeMenuListView-重写,第七章,菜单停留和暂停响应
- Android之侧滑菜单DrawerLayout的使用介绍
- Android开源项目SlidingMenu深切解析 侧滑菜单
- 侧滑菜单 Android开源项目SlidingMenu深切解析
- PinnedSectionListView详细介绍(android开源项目)
- 如何针对 Github 上某个 Android 开源项目进行学习
- google 原生态 抽屉式侧滑菜单 Android DrawerLayout 布局的使用介绍
- 采用github上的开源项目Android-PullToRefresh实现ListView的下拉刷新和上拉加载
- Android经典侧滑菜单SlidingMenu使用介绍
- Android实现ListView中的侧滑菜单
- Android开发-DrawerLayout实现侧滑菜单(1)-自定义ListView的实现&沉浸式状态栏
- Android经典侧滑菜单SlidingMenu使用介绍
- Android 基础:Fragment的介绍与应用,QQ底栏,侧滑菜单
- android 滑动删除等操作 SwipeListView github开源项目使用
- DrawerLayout的使用 侧滑加载Listview,首页使用Fragment和处理点击触摸冲突、穿透事件和监听菜单滑动状态的改变的详细介绍