一個Activity掌握Android5.0新控件 (轉)




原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386
谷歌在推出Android5.0的同時推出了一些新控件,Android5.0中最常用的新控件有下面5種。

1. CardView(卡片視圖)


CardView顧名思義是卡片視圖,它繼承FrameLayout。它是一個帶圓角的背景和陰影FrameLayout。CardView被包裝為一種布局,並且經常在ListView和RecyclerView的Item布局中,作為容器使用。
CardView的使用非常簡單:


    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="60dp">
        <Button
            android:id="@+id/ripple_button"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:background="@drawable/ripple"
            android:gravity="center"
            android:text="我在一個CardView里面" />
    </android.support.v7.widget.CardView>  

2. Patelle(調色板)


Patelle是一個輔助類,它的作用是從圖片中獲取突出的顏色。
它可以提取下面幾種特性的突出顏色:
- Vibrant(充滿活力的)
- Vibrant Dark(充滿活力,黑暗的)
- Vibrant Light(充滿活力的,明亮的)
- Muted(柔和的)
- Muted Dark(柔和的,黑暗的)
- Muted Light(柔和的,明亮的)

Patelle的使用也非常簡單:


        // 獲取應用程序圖標的Bitmap
        bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
        // 通過bitmap生成調色板palette
        Palette palette=Palette.from(bitmap).generate();
        // 獲取palette充滿活力色顏色
        int vibrantColor=palette.getVibrantColor(Color.WHITE); 

3. Toolbar(工具欄)


Toolbar顧名思義是工具欄,作為ActionBar的替代品出現,谷歌推薦使用Toolbar替代ActionBar。
Toolbar可以放置在任何地方,不像ActionBar一樣只能放置在固定的位置。
Toolbar支持比ActionBar更集中的特征。
Toolbar可能包含以下可選元素的組合:
- 導航按鈕
- 品牌的Logo圖像
- 標題和子標題
- 一個或多個自定義視圖

        this.toolbar = (Toolbar) findViewById(R.id.toolbar);
        this.recyclerview = (RecyclerView) findViewById(R.id.recycler_view);
        this.ripplebutton = (Button) findViewById(R.id.ripple_button);
        this.button = (Button) findViewById(R.id.button);
        // 設置Logo
        toolbar.setLogo(R.mipmap.ic_launcher);
        // 設置標題
        toolbar.setTitle("Android5.0");
        // 設置子標題
        toolbar.setSubtitle("新控件");
        //設置ActionBar,之后就可以獲取ActionBar並進行操作,操作的結果就會反應在toolbar上面
        setActionBar(toolbar);
        //設置了返回箭頭,,相當於設置了toolbar的導航按鈕
        getActionBar().setDisplayHomeAsUpEnabled(true); 

4. RippleDrawable(波紋圖)


RippleDrawable顧名思義是波紋圖,只能在Android5.0以上使用,目前還沒有提供RippleDrawable向下兼容的支持包。
RippleDrawable可顯示一個漣漪效應響應狀態變化 。
定義一個UI的背景圖片為RippleDrawable
android:background="@drawable/ripple"
在drawable文件夾下面定義一個RippleDrawable的xml文件

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#0000FF">
    <item>
    <shape android:shape="rectangle">
    <solid android:color="#FFFFFF" />
    <corners android:radius="4dp" />
    </shape>
    </item>
</ripple>  

android:color :表示波紋的顏色
<item>:表示波紋圖下面的條目

來看一下點擊按鈕的波紋效果

5. RecyclerView(循環視圖)


RecyclerView是ListView的替代品,谷歌推薦使用RecyclerView替代ListView。
RecyclerView提供比ListView更加靈活的使用,並且性能比ListView更優。
RecyclerView可以設置線性,網格,瀑布流式三種布局管理器。
- LinearLayoutManager(線性布局管理器)
- GridLayoutManager(網格布局管理器)
- StaggeredGridLayoutManager(瀑布流式布局管理器)

RecyclerView的簡單使用:

        this.recyclerview = (RecyclerView) findViewById(R.id.recycler_view);
        //新建一個線性布局管理器
        LinearLayoutManager manager=new LinearLayoutManager(this);
        //設置recyclerview的布局管理器
        recyclerview.setLayoutManager(manager);
        //新建適配器
        RecyclerViewAdapter adapter=new RecyclerViewAdapter(this,list);
        //設置recyclerview的適配器
        recyclerview.setAdapter(adapter);

RecyclerView適配器的定義:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyHolder>{private Context context;
    private List<String> list;
    public RecyclerViewAdapter(Context context) {
        this.context = context;
    }
    public RecyclerViewAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;

    }
    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyHolder holder=new MyHolder(LayoutInflater.from(context).inflate(R.layout.adapter_recycler_view,parent,false));
        return holder;
    }
    @Override
    public void onBindViewHolder(MyHolder holder, int position) {
        holder.textView.setText(list.get(position));

    }
    @Override
    public int getItemCount() {
        return list.size();
    }
    class MyHolder extends RecyclerView.ViewHolder{private TextView textView;
        public MyHolder(View itemView) {
            super(itemView);
            textView= (TextView) itemView.findViewById(R.id.text);
        }
    }
}

6. 一個Activity掌握Android5.0新控件


為了方便學習,本人將這5個新控件放到一個Activity中進行使用。

  • 程序原始界面講解
  • 點擊“設置…”按鈕,獲取應用程序圖標的充滿色彩的顏色,並將該顏色設置為Toolbar的背景顏色。
  • 點擊“我在…”按鈕,會出現波紋效果,因為按鈕的背景圖片是RippleDrawable,而此時按鈕狀態又發生了變化。

注意:RecyclerView,Patelle,CardView是在單獨的支持包里面,不在appcompat-v7及其依賴子包中
要使用它們,必須導入它們的依賴包


    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:palette-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'  

本程序源代碼下載一個Activity掌握Android5.0新控件






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM