zoukankan      html  css  js  c++  java
  • Android L中的RecyclerView 、CardView 、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

    设置横向:

    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<MyAdapter.Item> itemList = new ArrayList<MyAdapter.Item>();  
    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》。文章最后会给出这篇文章示例代码。

                        

    CardView                                         Palette

    Palette

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

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

    Vibrant  (有活力)

    Vibrant dark(有活力 暗色)

    Vibrant light(有活力 亮色)

    Muted  (柔和)

    Muted dark(柔和 暗色)

    Muted light(柔和 亮色)

    提取色值代码如下:

      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.           }  
  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/sage-blog/p/4154046.html
Copyright © 2011-2022 走看看