Android L中的RecyclerView CardView Palette的使用
阅读原文时间:2021年04月26日阅读:1

               

    《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

设置横向:

 @Override&nbsp;&nbsp;&nbsp; protected void onCreate(Bundle savedInstanceState) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.onCreate(savedInstanceState);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setContentView(R.layout.activity_recycler_view_horizontal);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // specify an adapter (see also next example)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List<MyAdapter.Item> itemList = new ArrayList<MyAdapter.Item>();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i < 100; i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itemList.add(new MyAdapter.Item("Item " + i, "world"));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mAdapter = new MyAdapter(itemList);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mRecyclerViewHorizontal = (RecyclerView) findViewById(R.id.my_recycler_view_horizontal);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mRecyclerViewHorizontal.setHasFixedSize(true);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // use a linear layout manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mRecyclerViewHorizontal.setLayoutManager(mLayoutManager);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mRecyclerViewHorizontal.setAdapter(mAdapter);&nbsp;&nbsp;&nbsp; }

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(柔和 亮色)

提取色值代码如下:

&nbsp; Bitmap bm = BitmapFactory.decodeResource(getResources(), item.image);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Palette palette = Palette.generate(bm);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (palette.getLightVibrantColor() != null) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name.setBackgroundColor(palette.getLightVibrantColor().getRgb());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getSupportActionBar().setBackgroundDrawable(new ColorDrawable(palette.getLightVibrantColor().getRgb()));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // getSupportActionBar().&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

/**

* @author 张兴业

*  http://blog.csdn.net/xyz_lmn

*  我的新浪微博:@张兴业TBOW

*/

示例代码

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow