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 简单介绍(2)

使用 Recycler 和Card Views为了在屏幕上显示美丽的风景,你需要一个view。你可以使用 RecyclerView作为ListView的替代者,但它比ListView更加强大,Goog...
  • gusgao
  • gusgao
  • 2016年08月29日 04:00
  • 445

Android Material Design简单使用

作为一个 Android developer,没有什么比拿着 UI 设计的一堆 iOS 风格的设计 来做需求更恶心的了,基本所有空间都要照着 iOS 来画一遍,Material Design 辣么酷炫...

android material design之简单控件(八)

这算是md风格这一段时间的最后一篇博客吧,以后也可能会更新,看几个图 先来看edittext的activity package com.fanyafeng.materialdesign.activ...

Android Design Support Library 中控件的使用简单介绍(一)介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android

介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android 2.1 。 这些组件在我看来就是对 Github中最近比较火的 android 组...

Android中Material Design中的风格介绍

Google在Android 5.0推出了Material Design,就增加了材料设计风格的主题,系统自带的三个材料风格主题: @android:style/Theme.Material (深色...

Android Material Design系列之主题样式介绍说明等

今天这篇文章应该算是Material Design系列的补充篇,因为这篇文章本来应该放到前面讲的,因为讲的是主题嘛,对于一些状态和颜色的介绍,因为我们一新建一个项目时,系统自带了三个属性的颜色,现在就...

Android Material Design:滑动指示选项卡android.support.design.widget.TabLayout的简单使用

该TabLayout的功用,简单的说,就是当用户在该TabLayout的选项卡子item中选择触摸时候,文字和下方的指示器横条滑动指示。这个功能就是以前APP开发常用的选项卡某一卡片被切换、选中时候的...
  • xzylx1
  • xzylx1
  • 2015年12月25日 10:08
  • 606

Material Design 最全解析_3 主题Theme

概述前两篇文章讲了概述和设计,从这篇文章开始正式讲Material Design在实际开发中的应用。 开发人员的重点来了!先看一下大纲对于开发人员,Android21新增了许多新控件和新特性,这些控...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android: Material Design 简单介绍(3)
举报原因:
原因补充:

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