title: AppCompatActivity
date: 2017-04-09 01:08:17
tags: 學習
categories: android
[TOC]
AppCompatActivity
官方介紹:
從Android 21之后引入Material Design的設計方式扯夭,為了支持Material Color 金砍、調(diào)色板媒咳、toolbar等各種新特性,AppCompatActivity就應用而生。
代替了原有的ActionBarActivity。在AppCompatActivity中,更是引入了AppCompatDelegate類的設計,
可以在普通的Acitivity中使用AppCompate的相關特性胰蝠。
可以用AppCompatActivity實現(xiàn)什么功能
自定義調(diào)色板
使用AppCompatActivity必須繼承Theme.AppCompat樣式。然后就可以使用colorPrimary震蒋,colorPrimaryDark和colorAccent進行相應的設置茸塞。
<style name="Base.AppTheme" parent="Theme.AppCompat">
<!--Android系統(tǒng)自帶標題欄顏色,一般情況下,我們都會設置為去除標題欄-->
<item name="colorPrimary">#ff00ff00</item>
<!--標題欄的字體顏色-->
<item name="android:textColorPrimary">#ff000000</item>
<!--系統(tǒng)狀態(tài)欄顏色-->
<item name="colorPrimaryDark">#ffff0000</item>
<!--EditText編輯查剖、RadioButton和CheckBox選中時的顏色-->
<item name="colorAccent">#ff0000ff</item>
<!--EditText钾虐、RadioButton和CheckBox等預設顏色-->
<item name="colorControlNormal">#ff00ff00</item>
<!--去除標題欄-->
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<!--只是一個主窗口的顏色,必須使用這種引用的方式設置顏色-->
<item name="android:windowBackground">@android:color/white</item>
<!--會影響所有的顏色-->
<item name="android:colorBackground">#FF00ff00</item>
<!--前景色笋庄,為什么字體顏色不發(fā)生改變呢效扫??-->
<item name="android:colorForeground">#ff000000</item>
<!--底部按鈕的顏色直砂,必須在5.0及以上系統(tǒng)才會生效-->
<item name="android:navigationBarColor">#ff099099</item>
<!--還是狀態(tài)欄的顏色菌仁,只有在5.0以上系統(tǒng)才會生效-->
<!--<item name="android:statusBarColor">@android:color/transparent</item>-->
<item name="android:textColor">#ff000000</item>
</style>
Toolbar的支持
在以前Android系統(tǒng)推薦的是ActionBar,但是ActionBar的自定義效果不好。現(xiàn)在新的ToolBar可以完美的擴展静暂。
- android:background="?attr/colorPrimary" 記得使用預定義樣式济丘。好像開發(fā)這么久都不用這種方式.......
<android.support.v7.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize">
</android.support.v7.widget.Toolbar>
詳細的ToolBar使用還需要單獨研究一下
好用的Snackbar
可以結合Snackbar使用,Snackbar可以代替Toast等使用洽蛀,并且它可以在一定程度上代替對話框功能摹迷。
新的對話框樣式
這個對話框相比較以前默認的,確實不是一個檔次的啊郊供。
android.support.v7.app.AlertDialog.Builder builder
= new android.support.v7.app.AlertDialog.Builder(this);
builder.setTitle("好看的對話框");
builder.setMessage("這個對話框真好看");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
總結
AppCompatActivity除過自己可以設置一些Material風格的顏色峡碉,更多的是和Material風格的控件搭配使用,比如toolBar颂碘、Snackbar和AlertDialog等等异赫。
如果這些控件要直接在Activity中使用,那么必須通過APPCompateDelegate去進行控制头岔。
注意:使用AppCompatActivity或直接使用APPCompateDelegate塔拳,都必須使用Theme.AppCompat樣式。