《Material Design》 提到,Android L版本中新增了RecyclerView、CardView 、Palette。RecyclerView、CardView为用于显示复杂视图的新增Widget。Palette作为调色板类,可以让你从图像中提取突出的颜色。


RecyclerView

    RecyclerView作为替代ListView使用,RecyclerView标准化了ViewHolder,ListView中convertView是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量保持在ViewHolder中,也就是说,假设没有屏幕显示10个条目,则会创建10个ViewHolder缓存起来,每次复用的是ViewHolder,所以他把getView这个方法变为了onCreateViewHolder。 ViewHolder更适合多种子布局的列表,尤其IM的对话列表。RecyclerView不提供setOnItemClickListener方法,你可以在ViewHolder中添加事件RecyclerView的使用可以参考《Material Design UI Widgets》。


RecyclerView可以实现横向、纵向滑动视图:


Android L中的RecyclerView 、CardView 、Palette的使用_第1张图片                 Android L中的RecyclerView 、CardView 、Palette的使用_第2张图片

RecyclerView 1                                    RecyclerView 2


设置横向:

[java] view plain copy print ?
  1. @Override  
  2.    protected void onCreate(Bundle savedInstanceState) {  
  3.        super.onCreate(savedInstanceState);  
  4.        setContentView(R.layout.activity_recycler_view_horizontal);  
  5.   
  6.        // specify an adapter (see also next example)  
  7.        List itemList = new ArrayList();  
  8.        for (int i = 0; i < 100; i++)  
  9.            itemList.add(new MyAdapter.Item("Item " + i, "world"));  
  10.        mAdapter = new MyAdapter(itemList);  
  11.   
  12.   
  13.        mRecyclerViewHorizontal = (RecyclerView) findViewById(R.id.my_recycler_view_horizontal);  
  14.        mRecyclerViewHorizontal.setHasFixedSize(true);  
  15.   
  16.        // use a linear layout manager  
  17.        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);  
  18.        mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);  
  19.        mRecyclerViewHorizontal.setLayoutManager(mLayoutManager);  
  20.        mRecyclerViewHorizontal.setAdapter(mAdapter);  
  21.   
  22.   
  23.    }  


CardView 

    CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。CardView是一个Layout,可以布局其他View。CardView 的使用可以参考《Material Design UI Widgets》。文章最后会给出这篇文章示例代码。


Android L中的RecyclerView 、CardView 、Palette的使用_第3张图片                    Android L中的RecyclerView 、CardView 、Palette的使用_第4张图片

CardView                                         Palette


Palette

    Palette从图像中提取突出的颜色,这样可以把色值赋给ActionBar、或者其他,可以让界面整个色调统一,效果见上图(Palette)。


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

Vibrant  (有活力)

Vibrant dark(有活力 暗色)

Vibrant light(有活力 亮色)

Muted  (柔和)

Muted dark(柔和 暗色)

Muted light(柔和 亮色)


提取色值代码如下:


[java] view plain copy print ?
  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.           } 

更多相关文章

  1. 直播软件源码Android 多个ImageView拖拽互换图片
  2. 【Android 界面效果6】Android 控件之ImageSwitcher图片切换器
  3. 安卓入门.RelativeLayout相对布局2
  4. android图片上传
  5. Android之TabHost布局
  6. 整理Android的列表的一行布局
  7. Android Glide加载图片成圆形
  8. GifView控件,android显示gif图片
  9. 【AS基础篇二:线性布局和相对布局的使用】:设计一个简单的电影界

随机推荐

  1. 生病期间肝了3万字的Spring容器启动流程
  2. 敖丙读者字节、滴滴面经(已拿offer)
  3. 0322作业(选择器的优先级,id,class,tag);
  4. 0322作业-CSS基础1
  5. nginx代理
  6. 实力认证|Authing 入选 2021 《中国网络安
  7. redis与lua
  8. nginx 负载均衡
  9. 进程终止,环境表以及在内存中布局和非局
  10. linux学习基本