Android: Material Design 简单介绍(3)

翻译 2016年08月29日 15:00:38

处理点击事件

不像ListVIew,RecyclerVIew没有onItemClick 接口,所以你需要在你的adapter里自己实现。在TravelListAdapter,创建一个局部变量来存放OnItemClickListener的实例

OnItemClickListener mItemClickListener;
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

你需要加上下面的方法在viewHolder的内部类

@Override
public 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 史上最全的材料设计控件大全

主要内容: 本文将要介绍Material design和Support library控件,主要包括TextInputLayout、SwitchCompat、SnackBar、FloatingAc...
  • tyk9999tyk
  • tyk9999tyk
  • 2017年02月14日 11:25
  • 1029

MaterialDesign_简介

MaterialDesign_简介1. 什么是MaterialDesign?伯乐在线上的介绍2. 使用MaterialDesign思想创作的App更多是不是感觉非常炫酷?从此再也不用照着IOS设计图纸...
  • ZhangLiChunZuoYa
  • ZhangLiChunZuoYa
  • 2016年06月04日 14:18
  • 1183

Android最佳实践之Material Design

Material概述及主题学习地址:http://developer.android.com/training/material/get-started.html 使用material design...
  • ada_dengpan
  • ada_dengpan
  • 2016年04月09日 23:53
  • 4860

创建简单的Android Material DesignDemo

1.关于MaterialDesign 还记得刚刚开始看到Android5.0刚出来的时候,感觉Android嵌入了MaterialDesign风格。那时候就感觉这种风格很好看。 2.Android上...
  • yubaoma
  • yubaoma
  • 2015年12月04日 11:37
  • 1485

material design 的android开源代码整理

material design 的android开源代码整理 1 android (material design 效果的代码库) 地址请点击:MaterialDesignLibrar...
  • qq153843338
  • qq153843338
  • 2015年03月27日 11:00
  • 1784

Android开发---十款 Material Design 风格的 Android 开源项目

自Android推出Material Design以来,原生的Android系统颜值越来越高,现在可以客观的说和苹果的iOS不分伯仲。这篇文章整理了一些优秀的遵循Material Design的And...
  • Maiduoudo
  • Maiduoudo
  • 2017年01月19日 21:24
  • 7108

Material Design介绍

Material Design介绍转载请注明出处,如果有问题的话可以在下面评论,我都会一一回复。或者直接上我的主页给我回复。http://ibat.xyz背景在Google I/O大会上Google引...
  • BeanJerry
  • BeanJerry
  • 2016年05月12日 22:58
  • 678

在你的Android应用中使用Material Design

译自 http://android-developers.blogspot.com/2014/10/implementing-material-design-in-your.html —— By ...
  • IJUST
  • IJUST
  • 2014年11月19日 22:34
  • 2517

Android Material Design(一)史上最全的材料设计控件大全

主要内容: 本文将要介绍Material design和Support library控件,主要包括TextInputLayout、SwitchCompat、SnackBar、Fl...
  • johnny901114
  • johnny901114
  • 2016年07月15日 15:47
  • 17793

Qt 5.6.0 在Qt Quick中使用material和universal的控件风格

推广 欢迎加入上海Qt开发群279906625 欢迎加入Qt&C++编程爱好者 271251545 欢迎访问 qtdream.com 和百度Qt吧讨论Qt技术 前言大家可以看到...
  • Accelerated1987
  • Accelerated1987
  • 2016年02月22日 00:22
  • 3086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android: Material Design 简单介绍(3)
举报原因:
原因补充:

(最多只允许输入30个字)