Android5.0之RecyclerView、CardView、Palette简述(后面逐步发详细的)

本文主要是介绍Android5.0之RecyclerView、CardView、Palette简述(后面逐步发详细的),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Android 5.0,Lollipop(棒棒糖)


L
 
         Android5.0最明显的变化是采用了全新的设计语言,被称之为“MaterialDesign”。界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。采用这种设计的目的在于统一Android设备的外观和使用体验,不论是手机、平板还是多媒体播放器。  
      除了视觉上的进化,Android5.0还为开发者带来了5000个新API以及2个UI Widget,从而让设备间更具整体感及互联性。谷歌表示,类似歌曲、照片、应用及最近搜索的结果,都能够在各种Android设备上无缝同步,这便是Android5.0想要呈现的使用体验。另外,Android5.0还包括新的电池模式、多账户登陆、访客模式以及通过蓝牙设备解锁等新功能。 
      总得来说,Android5.0是继4.0之后的一次重大更新,谷歌也希望通过新版本,来更好地统一Android的用户体验、设备交互能力,值得期待。当然,Android5.0正式推出后,第三方手机厂商也会获得原始版本,但需要数月时间来进行定制,所以三星、HTC的旗舰机型还需要一些时间才能升级到Android5.0。

2. UI Widget

2.1 RecyclerView

      RecyclerView是一个更高级柔性版本的Listview,RecyclerView是一个能包含很多视图的容器,它能完美的处理循环和滚动。在item动态变化的Listview使用RecyclerView。


RecyclerView使用很简单,因为它提供了:

1、定位item的布局管理器

2、常见的item操作默认动画


你能够灵活的为RecyclerView自定义布局管理器和动画。

使用RecyclerView,必须使用指定一个adapter、定义一个布局管理器。创建adapter必须继承自RecyclerView.Adapter。实施的细节需要看数据类型和需要的视图。

widget

   RecyclerView widget


    RecyclerView 提供了 LayoutManager,RecylerView 不负责子 View 的布局,我们可以自定义 LayoutManager 来实现不同的布局效果,目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默认是垂直, 可以指定水平, 这样就轻松实现了水平的 ListView。

RecylerView  . Adapter 两个主要方法:onCreatViewHolder和onBindViewHolder

  1. @Override  
  2.     public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,  
  3.                                                    int viewType) {  
  4.         // create a new view  
  5.         View v = LayoutInflater.from(parent.getContext())  
  6.                                .inflate(R.layout.my_text_view, null);  
  7.         // set the view's size, margins, paddings and layout parameters  
  8.         ...  
  9.         ViewHolder vh = new ViewHolder(v);  
  10.         return vh;  
  11.     }  

onCreatViewHolder 用于 展现视图和它的持有者, 只有当我们真正需要创建一个新视图时才被调用,不需要检查它是否已经被回收


  1. @Override  
  2.     public void onBindViewHolder(ViewHolder holder, int position) {  
  3.         // - get element from your dataset at this position  
  4.         // - replace the contents of the view with that element  
  5.         holder.mTextView.setText(mDataset[position]);  
  6.   
  7.     }  

onBindViewHolder用于 把数据绑定到View上

优点: RecylerView 不负责子 View 的布局,通过 LayoutManager来管理;支持 ItemAnimator 动画,显示添加、删除item动画,但是 DefaultItemAnimator也有一个很好的动画效果了 ;完美的解决了item内部与view的点击事件;解决了listview不支持横向的问题等等;
缺点: RecylerView  不提供onItemClickListener方法

2.2 Gallery
RecylerView打造Gallery
Gallery被谷歌废弃以后,通常使用ViewPager和HorizontalScrollView来实现Gallery的效果。这种方式实现容易引起Scroll冲突
RecyclerView很好的解决了Scroll问题,实现Gallery效果只需要对RecyclerView进行扩展,实现ScrollChange的监听回调

2.3Card View

    CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。CardView作为一个Layout,可以布局其他View

cardView

怎样指定CardView的属性:
1、使用card_view命名空间: xmlns:card_view = "http://schemas.android.com/apk/res-auto"

2、使用android:cardCornerRadius属性指定圆角半径

3、使用CardView.setRadius 设置圆角半径。

4、使用 android:cardBackgroundColor属性设置卡片颜色
还可以使用android:elevation属性,创建一个阴影的卡片。


3. Palette

3.1Material Design
Material Design: http://www.ithome.com/html/android/91348.htm

Material Theme提供了一下功能:

1、系统widgets可以设置调色板

2、系统widgets的触摸反馈

3、Activity过渡动画


       你可以根据你品牌的色彩来定义Material Theme,可以使用Material Theme的色彩为status bar、action bar着色。参考下图。

布料布局


系统Widgets有新的设计和触摸动画,你也可以在自己的应用中自定义色彩调色板、触摸反馈动画、Activity过渡。


Material Theme的定义如下:

  • @android:style/Theme.Material (dark version)
  • @android:style/Theme.Material.Light (light version)
  • @android:style/Theme.Material.Light.DarkActionBar
3.2Palette
Palette应运而生,实现图片中提取色值

Palette从图像中提取突出的颜色,可以把色值赋给ActionBar、或者其他view,可以让界面整个色调统一。


Palette这个类中提取以下突出的颜色:

Vibrant  (有活力)

Vibrant dark(有活力 暗色)

Vibrant light(有活力 亮色)

Muted  (柔和)

Muted dark(柔和 暗色)

Muted light(柔和 亮色)


                1 2

代码示例如下:

  1. Bitmap bm = BitmapFactory.decodeResource(getResources(), item.image);  
  2.           Palette palette = Palette.generate(bm);  
  3.           if (palette.getLightVibrantColor() != null) {  
  4.               name.setBackgroundColor(palette.getLightVibrantColor().getRgb());  
  5.               getSupportActionBar().setBackgroundDrawable(new ColorDrawable(palette.getLightVibrantColor().getRgb()));  
  6.               // getSupportActionBar().  
  7.   
  8.           } 


4. 开发必备

以上不管是RecyclerView、CardView、Palette,需要官方最新的support-v7包以及对应的开发包。

开发工具的话请参详我这篇blog Android开发工具更新ADT23,AS0.8.13下载地址 里面有最新的ADT、SDK、Android Studio以及开发支持包

5. 资源

Google2014I/O大会 的报道: http://www.mobiletmt.com/?p=9671#

关于RecyclerView解决onitemclick问题,里面有解决方法和 RecyclerView的源码
大神bolog: http://blog.csdn.net/jwzhangjie/article/details/36868515


如有转载,请注明出处:http://blog.csdn.net/hjhrq1991


这篇关于Android5.0之RecyclerView、CardView、Palette简述(后面逐步发详细的)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231846

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom