真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在低版本Android上使用MaterialDesign-創(chuàng)新互聯(lián)

譯自http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html—— By NashLegend

創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)成都聯(lián)通服務(wù)器托管報價,主機托管價格性價比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

原譯文在我的github上:https://github.com/NashLegend/ProjectBabel/blob/master/Material%20Design%20for%20Pre-Lollipop%20Devices.md

這里有個關(guān)于MaterialDesign的小例子。https://github.com/NashLegend/MaterialDesignTest。

這篇只是關(guān)于在低版本上使用的方法,更詳細的見下篇:如何在你的App中應(yīng)用Material Design設(shè)計風(fēng)格。

前排渣翻譯預(yù)警在低版本Android上使用Material Design,如果你能提供更好更專業(yè)的翻譯或者提出修改意見就好了……

在低版本Android上使用Material Design

Android 5.0已經(jīng)發(fā)布,帶來了新的Material Design,這種新的設(shè)計語言提供了更好的視覺體驗。為了使舊版本的Android系統(tǒng)也可以使用這種設(shè)計,我們擴展了支持包,對其中的AppCompat進行了重大更新,同時帶來了新的RecyclerVier,CardView以及Palette庫。

這篇文章中我們會介紹一下AppCompat發(fā)生了哪些新變化以及如何用它設(shè)計Material Design應(yīng)用.

What's new in AppCompat?

AppCompat(又叫ActionBarCompat)為4.0前的Android版本提供ActionBar后向兼容。而最新的AppCompat v21則可以提供Android 5.0特性支持。

在這個版本中,Android引入了新的 ToolBar控件。類似于ActionBar,但是提供了更多的控制權(quán)和靈活性。ToolBar就像其他的普通控件一樣,因此你可以容易地對其布局、執(zhí)行動畫以及與滾動事件交互。你也可以把它設(shè)置成你的Activity的ActionBar——就和原先的ActionBar一樣使用。

最新的AppCompat包含了多種Meterial Design樣式更新。比如Google I/O 2014應(yīng)用就使用了這些東東.

下面是如何使用它

開始使用

如果你使用Gradle,把appcompat加入到依賴庫。修改你的build.gradle:

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
}
如果你的App首次使用AppCompat

如果你沒用過AppCompat,那么下面教給你:

  • 所有的Activity必須繼承ActionBarActivity,ActionBarActivity繼承自v4包的FragmentActivity,因此你仍然可以使用Fragment.

  • 所有theme必須繼承Theme.AppCompat——這個主題包含一些不同的子主題,比如LightNoActionBar。

  • 如果你要inflate一些元素(比如說一個列表)以展示在ActionBar上的話,請確保你使用的是ActionBar的themed context——使用getSupportActionBar().getThemedContext()方法獲得這個context。

  • 對MenuItem進行相關(guān)操作時,必須MenuItemCompat的靜態(tài)方法

For more information, see the Action Bar API guide which is a comprehensive guide on AppCompat. 欲知更多更深入的知識,請看 ActionBar指南

如果你的App之前就使用AppCompat

對于大多數(shù)的應(yīng)用來說,你只要在values/里聲明一個主題就可以了:

values/themes.xml:


    
    @style/MyActionBarStyle

    
    @color/my_awesome_red
    @color/my_awesome_darker_red

    

完了你就可以把values-v14+的ActionBar樣式移除了。

設(shè)置主題

AppCompat has support for the new color palette theme attributes which allow you to easily customize your theme to fit your brand with primary and accent colors. For example: AppCompat已經(jīng)支持新的color palette theme屬性,使用這些屬性,你可以很輕易地講你的應(yīng)用色調(diào)與primary and accent colors搭配。舉個栗子:

values/themes.xml:


    
    @color/my_awesome_color

    
    @color/my_awesome_darker_color

    
    @color/accent

    

在Android 5.0以上系統(tǒng)上,設(shè)置了上面這些后,跟使用了Material主題一樣了,你不必單獨設(shè)置Material主題,它會自動修改狀態(tài)欄、最近運行屏幕等的顏色。

而在早期版本中,AppCompat會盡可能的模擬Material色彩主題。現(xiàn)階段時能作用于ActionBar和某些組件上——也就是說,對于以前版本的Android系統(tǒng)來說,就算使用了AppCompat也不可能實現(xiàn)所有的Android 5.0樣式。

Widget著色(Widget tinting)

當(dāng)設(shè)備的版本在Android 5.0以上時,所有的組件都會使用我們剛才設(shè)置的主題顏色進行著色,這是因為Android 5.0支持正面這兩種特性(5.0之前系統(tǒng)的悲劇):drawable著色(drawable tinting)和在drawable中引用主題屬性(使用?attr/xxx方式)。

對于早期版本的Android系統(tǒng),AppCompat為下列UI組件提供了類似的行為。

  • AppCompat’s toolbar中的一切 (action modes等等)

  • EditText

  • Spinner

  • CheckBox

  • RadioButton

  • Switch (要使用新的android.support.v7.widget.SwitchCompat)

  • CheckedTextView

AppCompat會幫助你實現(xiàn)這些行為,你完全不需要插手(有些要注意的地方,看下面的FAQ)。

Toolbar組件

在低版本Android上使用Material Design

AppCompat支持完全特性的Toolbar組件——android.support.v7.widget.Toolbar——和Android5.0系統(tǒng)的Toolbar完全一樣。要兩種使用ToolBar的方式:

  • 如果你想要使用現(xiàn)有的ActionBar功能(比如使用菜單、ActionBarDrawerToggle等等)同時又想自己掌握它的樣式,那么你可以把ToolBar用作ActionBar。

  • 對于一些ActionBar所不支持的場景——比如說在同一屏幕上使用多個ToolBar、使用低于屏幕寬度的尺寸的ToolBar等等(看上圖就知道了)——你就要使用ToolBar了。

Action Bar

要將ToolBar用作ActionBar,首先要禁用系統(tǒng)ActionBar,最方便的方式是使用Theme.AppCompat.NoActionBar主題(或者light版的NoActionBar).

然后創(chuàng)建一個ToolBar實例,通常是寫在XML里。

寬、高、背景等你完全可以自定義;由于ToolBar只是一個ViewGroup,因此你可以任意定義它的樣式的位置。

然后在Activity里面將ToolBar設(shè)置為ActionBar就行了:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blah);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

然后options menu就會顯示在ToolBar上了。

Standalone

standalone模式與actionbar模式的不同是你不必setSupportActionBar了,把它當(dāng)一個普通組件看待就好,也不必非得把ActionBar給禁用了。

standalone模式下,你就得手動設(shè)置ToolBar的內(nèi)容和動作了。比如說,如果你想讓它顯示一個動作按鈕(就像Actoinbar一樣,但不是actionbar模式),你可以這么做:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.blah);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);

    // Set an OnMenuItemClickListener to handle menu item clicks
    toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            // Handle the menu item
            return true;
        }
    });

    // Inflate a menu to be displayed in the toolbar
    toolbar.inflateMenu(R.menu.your_toolbar_menu);
}

ToolBar還支持很多其他功能,欲知更多,請查看它的API。

Styling

ToolBar的樣式的設(shè)置方式和標(biāo)準(zhǔn)的ActionBar是不一樣的,ToolBar的樣式是直接設(shè)置在這個View上的。

下面是一個要作為ActionBar使用的ToolBar的基本樣式。

app:theme可以確保你的文本的里面的items使用solid colors。

DarkActionBar

你也可以直接通過而已屬性設(shè)置ToolBar的Style。要得到一個看起來像'DarkActionBar'(深色內(nèi)容、淺色菜單)樣式的ToolBar,可以像下面設(shè)置theme和popupTheme屬性:

SearchView Widget

AppCompat提供了最新與Lollipop一樣的SearchView樣式和API,使其具有更強的可定制性(此處應(yīng)該有掌聲).

你應(yīng)該這樣定義SearchView的樣式:

values/themes.xml:

    @style/MySearchViewStyle


    
    ...
    
    ...
    
    ...
    
    ...
    
    ...
    
    ...
    
    ...
    
    ...

你不必設(shè)置所有上面的屬性,甚至一個都不設(shè)置也行,默認(rèn)的就很不錯。

結(jié)語

希望這篇文章能讓你學(xué)會使用AppCompat并開發(fā)出牛逼的Material Design風(fēng)格的app。

FAQ
為啥我的老Android系統(tǒng)上的EditText(或者上面提到的支持的控件)長得不像Material風(fēng)格呢?

AppCompat的工作原理是攔截layout inflation并且在對應(yīng)的位置插件一個特殊的可使用Material樣式的組件(tint-aware version of the widget)來實現(xiàn)的。對于大部分人來說這應(yīng)該沒啥問題,但是下面幾種情況有可能導(dǎo)致一些問題:

  • 你使用自己的自定義的widget(比如使用的自定義的繼承了EditText的類)。

  • 你創(chuàng)建EditText的時候沒有給它LayoutInflater(比如直接New EditText())

這些特殊的組件目前被我們藏起來了,因為還沒有完全做完。以后可能會好點……

為何某某組件在我的老Android系統(tǒng)上長得不像Material風(fēng)格?

目前AppCompat只支持常用的組件的Material主題,其他的以后會有的。

為啥我的ActionBar在Android 5.0上的陰影,我已經(jīng)把android:windowContentOverlay設(shè)置為null了?。?/h6>

Android 5.0上,ActionBar的陰影是由最新的elevation API提供的。如果不想要它,可以使用getSupportActionBar().setElevation(0)方法,或者在Action Bar style里面修改elevation屬性。

為啥我的老版本Android沒有波紋效果?

這東西只有用Android 5.0最新的RenderThread才能跑流暢,為了不讓你卡出翔,我們現(xiàn)在還是先不給老版本支持這玩意兒。

我使用了AppCompat后還能用Preference么?

在API v11+版本的機器上,你仍然可以在ActionBarActivity中使用PreferenceFragment。對于更老的老爺機來說,你只能使用普通的非Material樣式的PreferenceActivity。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文標(biāo)題:在低版本Android上使用MaterialDesign-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/dpeded.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部