Android Study之Material Design初體驗

前言

首先仇冯,我們要明確一個,什么是Material Design?Material Design,是谷歌在14年的IO大會上提出的一種新的理念肝匆,也被稱為新的設(shè)計語言(也被稱為“原材料設(shè)計”),稱它為設(shè)計語言不為過顺献,但是實際上旗国,這僅僅是谷歌提倡的一種新的設(shè)計風(fēng)格、理念以及設(shè)計基本原則注整。

同時能曾,大家也要明白,它在Android 5.0之后被引入肿轨,而LZ寿冕,現(xiàn)在才開始接觸,了解椒袍,希望為時不晚~這里附上官方學(xué)習(xí)地址:

https://developer.android.google.cn/about/versions/lollipop.html

Material Design基礎(chǔ)了解

Material Design重點在于一點驼唱,它的存在,讓控件有了生命驹暑,對應(yīng)的也擁有了層次感玫恳,提升了用戶交互感觸。

那么層次感又是什么呢优俘?如下圖所示:

之前京办,僅僅是X、Y軸帆焕,而現(xiàn)在新增了一個Y軸惭婿,也就是屏幕上方位置,具體與用戶交互效果如下:


那么對于不同的職業(yè)對待它的標(biāo)準(zhǔn)又是什么呢叶雹?

美工:盡量遵循Material Design設(shè)計财饥,提升原有界面UI以及圖標(biāo)設(shè)計;

產(chǎn)品:盡量遵循Material Design界面設(shè)計折晦、界面跳轉(zhuǎn)佑力、動畫效果、以及與用戶交互設(shè)計筋遭;

開發(fā):實現(xiàn)基于Material Design設(shè)計

Material Design基礎(chǔ)使用

谷歌開發(fā)以及收集了一些最新的開源的項目,匯集到最新的support兼容支持包以及最新的5.X API里面。而關(guān)于support包漓滔,我們不得不提有如下幾點:

android-support-v4:最低兼容到Android 1.6系統(tǒng)编饺,里面包含類似ViewPager等控件;

android-support-v7:最低兼容到Android 2.1的系統(tǒng)响驴,這個工程可以讓開發(fā)人員統(tǒng)一開發(fā)標(biāo)準(zhǔn)透且,在任何的系統(tǒng)版本下保證兼容性,but豁鲤,其中有的控件就不能兼容到2.1秽誊,比如我們強大的recyclerView,它最低兼容到3.0

而關(guān)于兼容性琳骡,我們會在下面進行講解說明锅论。But,大家在引入v7的時候楣号,是不是總會有些問題最易?這里為大家舉例說明一下:

自動導(dǎo)入的appcompat-v7項目自身就是報錯的,什么原因炫狱?

build的版本太低了藻懒,要么是SDK很新但是兼容包沒有更新。

appcompat-v7好不容易沒報錯视译,但是項目報錯嬉荆,一看控制臺:報appcompat里面的某個res/values/theme/xxx屬性不存在 等等問題,這又是什么原因酷含?

因為你引入的是很新的appcompat-v7項目鄙早,它要求必須很高的版本編譯,所以直接使用最高版本編譯即可第美。況且蝶锋,現(xiàn)在我們一般的app開發(fā),最低兼容到4.0什往,感覺4.0的設(shè)備少之又少了吧扳缕,不過也不排除~

Material Design初體驗

Material Design控制項目全局樣式

引入v7包依賴

編寫自定義主題文件

默認創(chuàng)建項目自動創(chuàng)建如下:

@color/colorPrimary@color/colorPrimaryDark@color/colorAccent

基于以上內(nèi)容,我們進行相應(yīng)編輯别威。

@color/mytextcolor@color/colorPrimary_pink@color/colorPrimary_pinkDark@color/background#906292@color/colorPrimary_pink

顯示的效果如下:

在此躯舔,網(wǎng)上給大家找了一個針對以上屬性繪制比較細致的圖,方便大家更好的理解和掌握省古。

拓展控件

在這里粥庄,我們首先要明確,我們?yōu)槭裁匆褂胿7包下面的資源內(nèi)容呢豺妓?

因為這里面是谷歌為了解決Android碎片化而準(zhǔn)備的很牛逼的新技能惜互,它的出現(xiàn)布讹,讓我們開發(fā)出來的app可以在不同的系統(tǒng)版本,不同的廠商定制的Android上面運行有著幾乎相同的體驗~

不信训堆?那我們舉幾個簡單的例子瞅瞅~專治各種不服

1. AlertDialog與v7 AlertDialog

點擊按鈕描验,彈出Dialog,關(guān)鍵代碼如下:

publicvoidshowDialog(View view){ ? ? ? ?AlertDialog.Builder builder =newAlertDialog.Builder(this); ? ? ? ?builder.setTitle("提示").setMessage("哇咔咔"); ? ? ? ?builder.setPositiveButton("嗯嗯好",newDialogInterface.OnClickListener() {

@OverridepublicvoidonClick(DialogInterface dialogInterface,inti){ ? ? ? ? ? ?} ? ? ? ?}); ? ? ? ?builder.setNegativeButton("555No",newDialogInterface.OnClickListener() {

@OverridepublicvoidonClick(DialogInterface dialogInterface,inti){ ? ? ? ? ? ?} ? ? ? ?}); ? ? ? ?builder.show(); ? ?}

publicvoidshowSupportDialog(View view){ ? ? ? ?android.support.v7.app.AlertDialog.Builder builder =newandroid.support.v7.app.AlertDialog.Builder(this); ? ? ? ?builder.setTitle("提示").setMessage("哇咔咔"); ? ? ? ?builder.setPositiveButton("嗯嗯好",newDialogInterface.OnClickListener() {

@OverridepublicvoidonClick(DialogInterface dialogInterface,inti){ ? ? ? ? ? ?} ? ? ? ?}); ? ? ? ?builder.setNegativeButton("555No",newDialogInterface.OnClickListener() {

@OverridepublicvoidonClick(DialogInterface dialogInterface,inti){ ? ? ? ? ? ?} ? ? ? ?}); ? ? ? ?builder.show(); ? ?}

而實現(xiàn)的效果坑鱼,在5.0設(shè)備如下:


而在4.4的設(shè)備上膘流,差距變真正顯示出來了,如下:


2. Button PK AppCompatButton

上碼:

效果如下:

啊哦鲁沥,沒啥效果呼股,接著往下瞅瞅~

3. ProgressBar

直接擼碼,沒啥可說的画恰,布局文件:

activity設(shè)置進度條屬性:

bar= (ProgressBar) findViewById(R.id.id_pro);

bar.setMax(100);

bar.setProgress(50);

效果如下:


4. SwipeRefreshLayout

上一套布局:


... ...

再來一套初始化:

srl = (SwipeRefreshLayout) findViewById(R.id.id_srl);srl.setSize(SwipeRefreshLayout.LARGE);srl.setOnRefreshListener(newSwipeRefreshLayout.OnRefreshListener() {

@OverridepublicvoidonRefresh(){

// 下拉完畢 加載更多數(shù)據(jù)

// srl.setRefreshing(false);}});srl.setColorSchemeColors(Color.RED, Color.BLUE, Color.GREEN);

//設(shè)置進度條的背景顏色

srl.setProgressBackgroundColorSchemeColor(Color.YELLOW);

//設(shè)置下拉多少距離開始刷新

srl.setDistanceToTriggerSync(70);

最后放個大招彭谁,效果圖:

5. LinearLayoutCompat:給包裹在里面的所有子控件添加間隔線

效果如下:

6. PopupWindow 拓展 ListPopupWindow PopupMenu

ListPopupWindow :

privateArrayAdapter adapter; ? ? ? ?String[] items = {"條目0","條目1","條目2","條目3","條目4","條目5","條目6",};

// 數(shù)據(jù)adapter =newArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);publicvoidshowPopup(View v){

finalListPopupWindow listPopupWindow =newListPopupWindow(this); ? ? ? ?listPopupWindow.setAdapter(adapter);

//設(shè)置錨點,彈出的位置是相對于v的位置listPopupWindow.setAnchorView(v); ? ? ? ?listPopupWindow.setWidth(200); ? ? ? ?listPopupWindow.setHeight(500); ? ? ? ?listPopupWindow.show(); ? ? ? ?listPopupWindow.setOnItemClickListener(newAdapterView.OnItemClickListener() {

@OverridepublicvoidonItemClick(AdapterView parent, Viewview,

intposition,longid){ ? ? ? ? ? ? ? ?Toast.makeText(getApplicationContext(),"點了第"+ position,0).show(); ? ? ? ? ? ? ? ?listPopupWindow.dismiss(); ? ? ? ? ? ?} ? ? ? ?}); ? ?}

效果如下:

PopupMenu:

編寫布局文件:

Activity:

PopupMenu popup =newPopupMenu(SupportUseActivity.this, view); ? ?popup.getMenuInflater() ? ? ? ? ? ?.inflate(R.menu.main, popup.getMenu()); ? ?popup.setOnMenuItemClickListener(newPopupMenu.OnMenuItemClickListener() {

publicbooleanonMenuItemClick(MenuItem item){

returntrue; ? ? ? ?} ? ?}); ? ?popup.show();

效果如下:


Demo查看地址

https://github.com/HLQ-Struggle/MaterialDesignStudy


該文章轉(zhuǎn)自:http://mp.weixin.qq.com/s/lZW-mH_Ftc00we3-ijTZCw

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阐枣,一起剝皮案震驚了整個濱河市马靠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔼两,老刑警劉巖甩鳄,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異额划,居然都是意外死亡妙啃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門俊戳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揖赴,“玉大人,你說我怎么就攤上這事抑胎≡锘” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵阿逃,是天一觀的道長铭拧。 經(jīng)常有香客問我,道長恃锉,這世上最難降的妖魔是什么搀菩? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮破托,結(jié)果婚禮上肪跋,老公的妹妹穿的比我還像新娘。我一直安慰自己土砂,他們只是感情好州既,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布谜洽。 她就那樣靜靜地躺著,像睡著了一般易桃。 火紅的嫁衣襯著肌膚如雪褥琐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天晤郑,我揣著相機與錄音,去河邊找鬼贸宏。 笑死造寝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吭练。 我是一名探鬼主播诫龙,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鲫咽!你這毒婦竟也來了签赃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤分尸,失蹤者是張志新(化名)和其女友劉穎锦聊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箩绍,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡孔庭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年啦租,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓷耙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚯嫌,死狀恐怖卑吭,靈堂內(nèi)的尸體忽然破棺而出芽淡,到底是詐尸還是另有隱情,我是刑警寧澤豆赏,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布挣菲,位于F島的核電站,受9級特大地震影響河绽,放射性物質(zhì)發(fā)生泄漏己单。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一耙饰、第九天 我趴在偏房一處隱蔽的房頂上張望纹笼。 院中可真熱鬧,春花似錦苟跪、人聲如沸廷痘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笋额。三九已至元暴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兄猩,已是汗流浹背茉盏。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枢冤,地道東北人鸠姨。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像淹真,于是被迫代替她去往敵國和親讶迁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容