《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可以实现横向、纵向滑动视图:



RecyclerView 1 RecyclerView 2


设置横向:

[java] view plain copy print ?
  1. @Override
  2. protectedvoidonCreate(BundlesavedInstanceState){
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_recycler_view_horizontal);
  5. //specifyanadapter(seealsonextexample)
  6. List<MyAdapter.Item>itemList=newArrayList<MyAdapter.Item>();
  7. for(inti=0;i<100;i++)
  8. itemList.add(newMyAdapter.Item("Item"+i,"world"));
  9. mAdapter=newMyAdapter(itemList);
  10. mRecyclerViewHorizontal=(RecyclerView)findViewById(R.id.my_recycler_view_horizontal);
  11. mRecyclerViewHorizontal.setHasFixedSize(true);
  12. //usealinearlayoutmanager
  13. LinearLayoutManagermLayoutManager=newLinearLayoutManager(this);
  14. mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
  15. mRecyclerViewHorizontal.setLayoutManager(mLayoutManager);
  16. mRecyclerViewHorizontal.setAdapter(mAdapter);
  17. }


CardView

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



CardView Palette


Palette

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


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

Vibrant (有活力)

Vibrant dark(有活力 暗色)

Vibrant light(有活力 亮色)

Muted (柔和)

Muted dark(柔和 暗色)

Muted light(柔和 亮色)


提取色值代码如下:


[java] view plain copy print ?
  1. Bitmapbm=BitmapFactory.decodeResource(getResources(),item.image);
  2. Palettepalette=Palette.generate(bm);
  3. if(palette.getLightVibrantColor()!=null){
  4. name.setBackgroundColor(palette.getLightVibrantColor().getRgb());
  5. getSupportActionBar().setBackgroundDrawable(newColorDrawable(palette.getLightVibrantColor().getRgb()));
  6. //getSupportActionBar().
  7. }

更多相关文章

  1. Android(安卓)环形布局: FloatingActionButton + ConstraintLayou
  2. Android从Fragment跳转到其他Activity的简单实例
  3. Android(5)---Toast用法总结
  4. 【Android(安卓)Developers Training】 3. 构建一个简单UI
  5. Android(安卓)中LayoutInflater的使用!
  6. 【Android】ListAdapter的常用的子类
  7. Android(安卓)RecyclerView之ListView显示(二)
  8. Android(安卓)Material Design控件之NavigationView
  9. Android(安卓)控件BottomNavigationView的使用

随机推荐

  1. Android电源管理,低电量报警
  2. android之HandlerThread类的实现
  3. Android 简单数据库(增删改查)
  4. 转:Android(安卓)App 如何动态加载类
  5. android进度条对话框
  6. Android UI控件详解-Button(按钮)点击事
  7. 遍历android根目录的简单资源查看器
  8. Android JSON 解析
  9. android 工具类2
  10. Android 图片转成String保存