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

  2. CardView

  3. Palette

    《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.    protected void onCreate(Bundle savedInstanceState) { 

  3.        super.onCreate(savedInstanceState); 

  4.        setContentView(R.layout.activity_recycler_view_horizontal); 

  5.        // specify an adapter (see also next example) 

  6.        List itemList = new ArrayList(); 

  7.        for (int i = 0; i < 100; i++) 

  8.            itemList.add(new MyAdapter.Item("Item " + i, "world")); 

  9.        mAdapter = new MyAdapter(itemList); 

  10.        mRecyclerViewHorizontal = (RecyclerView) findViewById(R.id.my_recycler_view_horizontal); 

  11.        mRecyclerViewHorizontal.setHasFixedSize(true); 

  12.        // use a linear layout manager 

  13.        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this); 

  14.        mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 

  15.        mRecyclerViewHorizontal.setLayoutManager(mLayoutManager); 

  16.        mRecyclerViewHorizontal.setAdapter(mAdapter); 

  17.    } 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_recycler_view_horizontal);

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

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. 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.           } 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章