Android: Material Design 简单介绍(3)
来源:互联网 发布:python sort函数 编辑:程序博客网 时间:2024/05/17 06:22
处理点击事件
不像ListVIew,RecyclerVIew没有onItemClick 接口,所以你需要在你的adapter里自己实现。在TravelListAdapter,创建一个局部变量来存放OnItemClickListener的实例
OnItemClickListener mItemClickListener;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
你需要加上下面的方法在viewHolder的内部类
@Overridepublic void onClick(View v) {}
最终,把这两个结合想起来
placeHolder.setOnClickListener(this);
在上面的代码里,你给placeHolder 初始化了setOnClickListener 然后重写了onClick 方法,你需要给RecyclerView实现onClick 借口。首先,在ViewHolder 类里定义如下的接口
public interface OnItemClickListener { void onItemClick(View view, int position);}
然后创建它的setter方法
public void setOnItemClickListener(final OnItemClickListener mItemClickListener) { this.mItemClickListener = mItemClickListener;}
在onclick里处理逻辑
if (mItemClickListener != null) { mItemClickListener.onItemClick(itemView, getPosition());}
现在你点击屏幕就会看到如下的效果
在MainActivity创建OnItemClickListener 的实例
TravelListAdapter.OnItemClickListener onItemClickListener = new TravelListAdapter.OnItemClickListener() { @Override public void onItemClick(View v, int position) { Toast.makeText(MainActivity.this, "Clicked " + position, Toast.LENGTH_SHORT).show(); }};
最终,给adapter加上listener
mAdapter.setOnItemClickListener(onItemClickListener);
现在再运行,就能看到土司了
从List到Grid的转换
StaggeredLayoutManager 可以让你的布局随意变动。如果说你想让它每行显示两列,只需要spanCount 就可以了。
在toggle()方法里,加上if
mStaggeredLayoutManager.setSpanCount(2);
else
mStaggeredLayoutManager.setSpanCount(1);
现在的效果是这样的
使用Palette API
现在你可以加入一些有趣的Material Design特性。首先回到TravelListAdapter,在这里你讲会给placeNameHolder 增加一些动态的北京颜色。
在onBindViewHolder(…):里加上下面的代码
Bitmap photo = BitmapFactory.decodeResource(mContext.getResources(), place.getImageResourceId(mContext));Palette.generateAsync(photo, new Palette.PaletteAsyncListener() { public void onGenerated(Palette palette) { int bgColor = palette.getMutedColor(mContext.getResources().getColor(android.R.color.black)); holder.placeNameHolder.setBackgroundColor(bgColor); }});
通过使用 generateAsync(…)给北京生成一个颜色调色板,你将会在调色板创建好了之后出发回调函数,在这里你可以设置背景,如果颜色不存在会使用android.R.color.black.
- Android: Material Design 简单介绍(3)
- Android: Material Design 简单介绍(1)
- Android: Material Design 简单介绍(2)
- Material Design Android控件介绍
- Android Material Design 简单控件
- Android Material Design简单使用
- android material design之简单控件(八)
- Android中Material Design中的风格介绍
- Android Material Design(MD)
- Android material design(上)
- Android material design(下)
- Material Design 开发利器:Android Design Support Library 介绍
- 【Material Design】Material Design 开发利器:Android Design Support Library 介绍
- Material Design介绍
- Material Design简单实践
- Material Design 简单实例
- Toobar学习总结以及Material Design简单介绍
- Android Design Support Library 中控件的使用简单介绍(一)介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android
- 字符编码ASCII, Unicode和UTF-8概念扫盲
- Linux文件删除原理:
- qt 文件对话框的使用
- linux上使用libfreenect2从kinect2获取数据
- Core Image Programming Guide(留给自己看的)
- Android: Material Design 简单介绍(3)
- LINUX环境安装ORACLE客户端
- 一路有你,倍感幸福!
- Webform gridView分页
- NSArray
- Alcatraz插件管理工具
- 工作流Activiti的学习总结(十)Activiti手动执行的应用(UserTask)
- (3)HTML5-多媒体应用
- Context.bindService()详解