❶ 怎麼把android ui設計的好看
最主要在設計的時候不要完全按照自己的喜好來,適當的遵循規范再加之大眾審美評估水平來設計即可。
1、注意字體的緩行大小。安卓裡面也有森帶相應的規范,比如最小字體是多大,文本是多大,按照規范來設計的話就可以保證我們的界面圖整體看起來更加的美觀。
2、在使此哪蘆用的字體方面,也是有一個嚴格的規定,英文在安卓裡面使用的是Roboto,中文字體使用的是droid sans fallback,當然現在隨著安卓手機解析度的增加, 中文,字體的選擇也多了幾種,比如中文也可以使用思源黑體等。
3、一般PS新建 1080 x 1920的尺寸,也就是對應該安卓的xxhdpi ,所以切圖也是放入程序中的xxhdpi文件夾 下。設計時一定好考慮好小屏幕適配問題,還要對部分切圖進行調整重切,因為有些圖等比縮小時會出現糊,或不好看的現象。
❷ 《Android編程權威指南》這本書翻譯的怎麼樣
原書名:Androidprogramming:thebignerdranchguide原出版社:BigNerdRanchGuides作者:(美)BillPhillipsBrianHardy譯者:王明發叢書名:圖靈程序設計叢書出版社:人民郵電出版社ISBN:9787115346438上架時間:2014-3-18出版日期:2014年4月開本:16開頁碼:523版次:1-1所屬分類:計算機>軟體與程序設計>移動開發>Android編輯推薦Amazon榜首暢銷書全面覆蓋Android開發知識點全真示例、循循善誘、輕松上手內容簡介書籍計算機書籍BigNerdRanch是美國一家專業的移動開發技術培訓機構,《Android編程權威指南》主要以訓練營的5天教學課程為基礎,融合了兩位作者多年的心得體會,是一本完全面向實戰的Android編程權威指南。全書共37章,詳細介紹了GeoQuiz、HelloMoon、DragAndDraw等8個Android應用。這些應用的難易程度不一,最復雜的CriminalIntent應用佔用了13章的篇幅。通過這些精心設計的應用,讀者可掌握很多重要的理論知識和開發技巧,獲得最前沿的開發經驗。如果你熟悉Java語言,或者了解對面向對象編程,那就立刻開始Android編程之旅吧!作譯者BillPhillipsBigNerdRanch資深Android講師、高級軟體工程師。他與BrianHardy合作,為BigNerdRanch開發了廣受好評的5天Android訓練營培訓課程。Bill擅長透徹地理解事物的本質,並幫助其他人做到這一點。閑暇時間,Bill喜歡閱讀和彈鋼琴。BrianHardyBigNerdRanch首席軟體工程師、資深講師。BigNerdRanch的Android、iOS和Ruby培訓課程均由Brian設計開發。閑暇時間,Brian喜歡騎自行車和聽音樂。目錄《Android編程權威指南》第1章Android應用初體驗11.1應用基礎21.2創建Android項目21.3Eclipse工作區導航51.4用戶界面設計61.4.1視圖層級結構91.4.2組件屬性101.4.3創建字元串資源111.4.4預覽界面布局121.5從布局XML到視圖對象131.6組件的實際應用151.6.1類包組織導入161.6.2引用組件161.6.3設置監聽器171.7使用模擬器運行應用211.8Android編譯過程22第2章Android與MVC設計模式262.1創建新類262.2Android與MVC設計模式30↓全部內容譯者序2007年,蘋果公司發布了革命性的iPhone,自此開啟了智能手機的新時代。隨後,2008年,谷歌公司和開放手機聯盟共同開發並推出了Android智能手機。時至今日,移動智能設備不僅深刻影響了智能手機行業,也改變了整個科技產業以及人們生活的方方面面,在全球掀起巨大的移動浪潮。迎著這股浪潮,國際巨頭、創業公司、獨立開發者各展身手,奮力搏擊,搶登浪潮之巔。蘋果一度成了全球市值最高的公司,三星則是賣出了數億部Android手機。2013年,網路以19億美元的價格收購了91無線。2014年開春,Facebook更是以190億美元的天價收購了開發WhatsApp應用僅有50名員工的公司,直接把這股移動浪潮推到了巔峰。豪不誇張地說,所有這一切都離不開移動軟體的開發。目前主流的開發平台是蘋果的iOS系統和谷歌的Android系統。憑借精美絕倫的UI、流暢順滑的交互體驗,iOS開發在早期搶佔了先機。但如今,谷歌在Android系統UI設計及優化方面的前進步伐已趕超蘋果在創新方面的進步。越來越多的軟體人開始投身Android應用開發陣營。對於業余愛好者來說,Android還是iOS,喜歡誰就選誰。而對於專業開發人員,果粉也好,Android迷也罷,從職業發展及商業利益角度來說,掌握雙平台開發是必須的。作為榮獲2012Jolt生產力大獎的iOS編程教程的姊妹篇,BigNerdRanch公司再接再厲,推出了這本《Android編程權威指南》。英文版甫一上架立即贏得了Amazon讀者的廣泛贊譽。本書基於BigNerdRanch公司的Bootcamp教程編寫而成。BigNerdRanch創於2001年,是美國一家知名IT培訓公司,每年為微軟、谷歌、Faceboook等行業巨頭培養眾多專業人才。而BootCamp在英文中原意為美國海軍陸戰隊新兵訓練營,應用於IT培訓行業中,意指通過全真IT項目實戰,培訓出像美國海軍陸戰隊員那樣優秀的IT人才。本書適合有一定Java編程經驗(至少熟悉Java)並對Android開發感興趣的讀者閱讀。本書最大的特點是,從Android應用的基本概念及組成開始介紹直至完成一個復雜實用的谷歌地圖應用,作者巧妙地把Android開發所需的龐雜知識、行業實踐、編程規范等融入本書,並以一種潤物無聲的導學方式引領讀者輕松完成全書的開發學習。第26章在講解後台任務和線程時,作者寓教於樂,還精心安排了在鞋店工作的閃電俠案例,既能幫助讀者形象地理解復雜抽象概念,又讓人印象深刻,難以忘卻。類似這樣的案例、幽默全書俯拾皆是,還是等讀者自己去發掘吧。另外,幾乎每章都配有深入學習及難度逐步升級的挑戰練習版塊。深入學習意在讓讀者進一步掌握本章關鍵知識點並指明學習更高級主題的方向;挑戰練習能夠讓讀者立即獲得練手的機會,通過練習鞏固運用所學知識。學完本書,在實際開發中,讀者自然而然就會知道該做什麼,如何去做以及為什麼這樣做。最後,感謝圖靈各位編輯老師的辛勤工作,尤其感謝李靜老師的細心指導,本書及本人都獲益良多。更要感謝的是我的clover和千尋,沒有他們的寬容、理解與支持,本書譯稿不可能完成。雖然我已盡力傳達原作本意並保證譯稿的較高質量,但有時拼寫錯誤、因版本升級而導致某些內容不再適用,甚至是囿於個人水平而犯錯的情況再所難免。如果你發現了問題或有好的建議,請批評指正並不吝電郵提交至[email protected]或反饋至圖靈社區。2014年2月28日於上海
❸ 32個實用酷炫的Android開源UI框架
1.Side-Menu.Android
分類側滑菜單 , Yalantis 出品。
項目地址: https://github.com/Yalantis/Side-Menu.Android
2.Context-Menu.Android
可以方便快速集成漂亮帶有動畫效果的上下文菜單, Yalantis 出品。
項目地址: https://github.com/Yalantis/Context-Menu.Android
3.Pull-to-Refresh.Rentals-Android
提供一個簡單可以自定義的 下拉刷新 實現,Yalantis 出品。
項目地址: https://github.com/Yalantis/Pull-to-Refresh.Rentals-Android
4.Titanic
可以顯示水位上升下降的TextView
項目地址: https://github.com/RomainPiel/Titanic
5.AndroidSwipeLayout
滑動Layout ,支持單個View,ListView,GridView
項目地址: https://github.com/daimajia/AndroidSwipeLayout
Demo地址: Download Demo
6.Android Typeface Helper
可以幫你輕松實現自定義字體的庫
項目地址: https://github.com/norbsoft/android-typeface-helper
7.android-lockpattern
Android的圖案密碼解鎖
項目地址: https://code.google.com/p/android-lockpattern/
Demo地址: https://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo
文檔介紹: https://code.google.com/p/android-lockpattern/wiki/QuickUse
APP示例:Android開機的圖案密碼解鎖,支付寶的密碼解鎖
8.ToggleButton
狀態切換的 Button,類似 iOS,用 View 實現
項目地址: https://github.com/zcweng/ToggleButton
9.WilliamChart
繪制圖表的庫,支持LineChartView、BarChartView和StackBarChartView三中圖表類型,並且支持 Android 2.2及以上的系統。
項目地址: https://github.com/diogobernardino/WilliamChart
Demo地址: https://play.google.com/store/apps/details?id=com.db.williamchartdemo
Demo項目: https://github.com/diogobernardino/WilliamChart/tree/master/sample
10.實現滑動ViewPager漸變背景色
項目地址: https://github.com/TaurusXi/GuideBackgroundColorAnimation
11.Euclid
用戶簡歷界面, Yalantis 出品。
項目地址: https://github.com/Yalantis/Euclid
12. InstaMaterial
Instagram的一組Material 風格的概念設計
項目地址: https://github.com/frogermcs/InstaMaterial
13. SpringIndicator
使用bezier實現粘連效果的頁面指示
項目地址: https://github.com/chenupt/SpringIndicator
14. BezierDemo
仿qq消息氣泡拖拽 消失的效果。
項目地址: https://github.com/chenupt/BezierDemo
15. FoldableLayout
折疊的信紙被打開一樣的動畫效果
項目地址: https://github.com/alexvasilkov/FoldableLayout
16.Taurus
下拉刷新,Yalantis 出品。(是不是有點似曾相識呢?)
項目地址: https://github.com/Yalantis/Taurus
17. PersistentSearch
在點擊搜索的時候控制項在原有位置顯示輸入框。
項目地址: https://github.com/Quinny898/PersistentSearch
18. circular-progress-button
帶進度顯示的Button
項目地址: https://github.com/dmytrodanylyk/circular-progress-button
19. discrollview
當上下滾動的時候子元素會呈現不同動畫效果的scrollView,網頁上稱之為:視差滾動
項目地址: https://github.com/flavienlaurent/discrollview
20. sweet-alert-dialog
一個帶動畫效果的 自定義對話框樣式
項目地址: https://github.com/pedant/sweet-alert-dialog
21. android-floating-action-button
Material Desig風格的 浮動操作按鈕
項目地址: https://github.com/futuresimple/android-floating-action-button
22. android-collapse-calendar-view
可以在月視圖與周視圖之間切換的calendar控制項
項目地址: https://github.com/blazsolar/android-collapse-calendar-view
22. android-collapse-calendar-view
可以在月視圖與周視圖之間切換的calendar控制項
項目地址: https://github.com/blazsolar/android-collapse-calendar-view
23. NumberProgressBar
個簡約性感的數字進度條
項目地址: https://github.com/daimajia/NumberProgressBar
24. CircularProgressView
CircularProgressView 是通過自定義view的方式實現的Material風格的載入提示控制項,兼容任何版本。
項目地址: https://github.com/rahatarmanahmed/CircularProgressView
25. OriSim3D-Android
opengl 實現了各種折紙效果,模擬了從一張紙折疊成一條船的整個過程
項目地址: https://github.com/RemiKoutcherawy/OriSim3D-Android
26、萬能日歷控制項:CalendarView
GitHub: https://github.com/huanghaibin-dev/CalendarView
中文使用文檔: https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md
27、大圖查看器: BigImage ImageView ViewPager
Github: https://github.com/SherlockGougou/BigImageViewPager
地址: https://www.jianshu.com/p/b15e65791c3f
支持超長圖、超大圖的圖片瀏覽器,優化內存,支持手勢放大、下拉關閉、查看原圖、載入百分比、保存圖片等功能。現已支持androidx。
28、安卓工具包androidUntilCode(安卓必備)
Github: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md
29、萬能適配器-BRAVH
官網: http://www.recyclerview.org
GitHub: https://github.com/CymChad/BaseRecyclerViewAdapterHelper
RecyclerView
作為Android最常用的控制項之一,是否常常為「她」操碎了心
BRVAH受益群體是所有Android開發者,希望更多開發者能夠一起來把這個項目做得更好幫助更多人
30、智能刷新控制項--SmartRefreshLayout
GitHub: https://github.com/scwang90/SmartRefreshLayout
中文: https://gitee.com/scwang90/SmartRefreshLayout
SmartRefreshLayout以打造一個強大,穩定,成熟的下拉刷新框架為目標,並集成各種的炫酷、多樣、實用、美觀的Header和Footer。 正如名字所說,SmartRefreshLayout是一個「聰明」或者「智能」的下拉刷新布局,由於它的「智能」,它不只是支持所有的View,還支持多層嵌套的視圖結構。 它繼承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了現在流行的各種刷新布局的優點,包括谷歌官方的 SwipeRefreshLayout , 其他第三方的 Ultra-Pull-To-Refresh 、 TwinklingRefreshLayout 。 還集成了各種炫酷的 Header 和 Footer。
31、內存泄漏檢測工具--leakcanary
使用方式: https://www.jianshu.com/p/b83ddffcb3b5
LeakCanary是Square公司基於MAT開源的一個工具,用來檢測Android App中的內存泄露問題。官方地址: https://github.com/square/leakcanary
32、 1218683832 / AndroidSlidingUpPanel
SlidingUpPanelLayout:可以上下滑動的菜單布
https://github.com/1218683832/AndroidSlidingUpPanel
❹ Android UI 的設計規則
一. Launcher(啟動圖標):
1.在背景下易見;
2.尺寸 Phone: 48*48 dp
Google Play: 512*512 pixels
3.風格:任意輪廓。三維,正視圖,稍微透視看起來像從頂部往下看(使用戶有深度感)。
二. Action Bar(工具欄):工具欄圖標為圖片按鈕
1.尺寸: phone下為32*32dp
2.焦點區比例: 光學直角區可為24*24dp
3.風格: 象形,平淡,不要太詳細,光滑曲線或尖銳的形狀。若圖片偏窄,可轉動45度角以填充焦點區,筆畫寬度與空白寬度至少為2dp
4.顏色: #333333 激活:60%不透明 禁用:30%不透明
#FFFFFF 激活:80%不透明 禁用:30%不透明
三. Small/Contextual Icons(小的上下文圖標):用於為動作和狀態提供特殊項目
1.尺寸: 16*16dp
2.焦點區域與比例: 全部為16*16dp, 光學直角區域為12*12dp
3.風格: 中性,平淡,簡單。填充的形狀比簡單的筆畫易見。使用簡單的視覺暗示以便用戶能輕易讀懂。
4.顏色: 使用少量的非中性顏色。激活時與背景形成對比。
四. Notification Icons(通知圖標)
1.尺寸: 必須為24*24dp
2.焦點區域與比例: 全部區域24*24dp 光學直角區域22*22dp。
3.風格: 平實簡單,與啟動圖標一樣使用視覺暗示。
4.顏色: 全白,也可以使其根據系統變暗。
專題二、設計原則:
一. 使用戶著迷:
1.用驚艷吸引人:漂亮界面、動畫、聲音……
2.實際對象比按鈕和菜單更有趣:使用戶能直接觸摸和控制App中的對象
3.使成為自己的:既有默認的,又可以進行自定義設置
4.了解學慣用戶所需:學慣用戶愛好與習慣,而不是要求用戶單調的做
二. 讓生活簡單化:
1.保持簡潔:用短語
2.圖片比文字更快:用圖片解釋想法
3.替用戶做決定,但最終決定權在於用戶:不是一開始就問,先猜測,允許撤銷
4.只顯示用戶正需要的:將任務和信息分塊,隱藏不是必須的選項
5.用戶一直要知道自己在哪:在屏幕間用切換顯示關系,提供任務反饋
6.從不丟失:保存用戶花時間創建的,並讓他們可以從任何地方接入,記住設置、個人觸摸和創建
7.看起來一樣,功能也一樣:外觀、模式差不多的操作都要相近
8.重要的時候才打擾用戶:一個好的個人助手,會避免掉不重要的事情,使用戶能集中精力
三. 讓用戶興奮起來:
1.給用戶所有地方都能使用的技巧:使應用程序簡單易學
2.不是我的錯:紳士的讓用戶做修正,如果出錯,給出恢復指導但省略科技細節
3.給出鼓勵(回饋):將復雜任務切成易於完成的小步驟,在用戶動作後給出回饋,例如一個光暈
4.為用戶完成繁重的事務:使新手做他們認為自己不會做的事情,而且做得像專家一樣。例如多種照相功能的快捷鍵使業余愛好者通過簡單幾步就能完成
5.讓重要的事情更快:將App中最重要的部分更容易找到,更快使用,像照相機的快捷鍵、音樂播放器的暫停鍵等。
專題三、書寫風格:
一. 使用戶著迷:
1.保持簡潔:簡明、簡單、精確
2.保持簡單:使用簡短單詞、動詞和名詞
3.友好:用第二人稱你稱呼用戶,使用戶感覺安全、快樂和激情
4.重要的事放在前
5.避免重復
❺ Android UI規范是什麼
從事UI設計行業的朋友都知道,每一張設計稿都是有規范尺寸的,並且IOS的和Android還不同,IOS UI設計規范為375*667 1x的尺寸,那麼Android UI規范是什麼呢,下面讓我們一起來了解一下。
在做Android UI設計的時候,畫布的尺寸我們一般都是選擇360*640 1x,也就是說是選擇720*1280這個尺寸。
我們從上到下來進行了解,最上邊的是狀態欄,狀態欄的高度是25。
在狀態欄中肯定就是信號、電源以及時間這些了,每個Android定製系統的擺放樣式都不同,這一點不用糾結。
狀態欄下邊就是導航欄了,導航欄起到的是導航作用,高度是45px。
導航欄中間一般都是有文字來起到提醒作用的,導航文字的大小一般都是18px。
在最下方就是我們的標簽欄了,標簽欄的作用就是給用戶提供切換界面的作用,標簽欄的高度為50px。
在標簽欄中擺放的肯定就是我們的ICON圖標了,要注意,圖標的切圖點擊區域不能夠小於24px。
一些ICON圖標的下方還會有文本,這里文本的大小一般就是10或者是11px了,因為范圍有限。
本文尺寸均為1x。
❻ android系統中有哪三種常用的ui設計方式
Android 資源類型
1.字元串資源
>>1.普通字元串
>>2.字元串數組
復制代碼
<resources>
<string-array name="planets_array">
<item>aaa</item>
<item>bbb</item>
</string-array>
</resources>
復制代碼
獲取方式:getResources().getStringArray(R.array.planets_array)
>>3.復數字元串資源
某些自然語言中,不同的數字在使用方法上會有所不同,比如one book,two books。當數量大於1時,會使用不同的名詞或其它復數形式;
復制代碼
<resources>
<plurals name="numberOfp">
<item quantity="one">one person</item>
<item quantity="other">more persons</item>
</plurals>
</resources>
復制代碼
quantity屬性的值除了one和other外,還可以是zero,two,few,many;
引用復數字元串:
// 引用數字為1的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,1);
// 引用數字為其它值的復數字元串
getResources().getQuantityString(R.pluarlas.numberOfp,10,10);
>>4.佔位符格式化字元串
常用的格式化字元串三種方法:
>>1.在字元串中使用引號
字元串中的值雖然可以隨意指定,但是當遇到特殊符號時(雙引號,單引號)就需要採取特殊的方法來處理這些符號。
如果是單引號(')可以使用轉義符(\)或用雙引號(")將整個字元串括起來,如果是雙引號,可以在雙引號前使用轉義符(\)。
<resources>
<string name="str1">"This'll work"</string> This'll work
<string name="str2">This\'ll work</string> This'll work
<string name="str3">\"apple\"</string> "apple"
</resources>
>>2.用佔位符格式化字元串
使用String.format(String,Object...)方法可以格式化帶佔位符的字元串,只需要在字元串中插入佔位符,就可以使用String.format方法格式化字元串資源,format方法要求的佔位符用%1,%,...,%n,其實第n個佔位符與format方法的n+1個參數值對應;
<resources>
<!-- $s表示該佔位符被字元串替換,$d表示該佔位符被整數替換 -->
<string name="str1">hello,%1$s!You have %2$d new message</string>
</resources>
String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);
>>3.使用HTML標簽格式化字元串資源
字元串資源支持一些HTML標簽,因此可以直接在字元串資源中使用這些HTML標簽格式化字元串
字元串資源支持如下的HTML標簽
<b>粗體字
<i>斜體定
<u>帶下劃線的字
有時需要同時使用HTML標簽和佔位符格式化字元串,如果使用String.format方法格式化字元串,會忽略字元串中的所有HTML標簽。為了使format方法可以格式化帶
HTML標簽的確字元,需要使用Html.formHTML方法處理字元串;
<resources>
<string name="hello_world">Welcome to <b>android</b></string>
<string name="str2">Hello,%1$s! You have <b> %2d new messages </b></string> <!--同時包含佔位符和html標簽的字元串-->
</resources>
由於需要使用Html.formHTML方法處理字元串,因此HTML標簽中的 "<" 需要使用 "<" 表示 ">" 並不需要處理
獲取字元串:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text);
// 如果format的某個參數包含HTML的特殊字元,如"<","&",可以使用如下方式讀取字元串的值;
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);
2.Layout資源
1、如果根節點是View,除了<requestFocus>標簽外,不能添加任何子標簽,<requestFocus>可能被添加到布局文件的任何View中,表示該標簽對應的控制項在顯示時處於焦點狀態,整個布局文件只能有一個<requestFocus>標簽
2、根節點是ViewGroup,常用的布局都是ViewGroup的子類
3、重用布局文件
如果想重用某個布局文件,可以使用<include>標簽
<include layout="@layout/xx_layout" />
如果想讓一個布局文件被另一個布局文件引用(使用<include>標簽),可以使用<merge>作為被引用布局文件的根節點,由於<merge>並不會生成任何標簽(在大量引用布局文件時不至於生成大量無用的標簽),但是xml文件必須要有一個根節點,因此<merge>所起的作用就是作為xml文件的根節點,以使xml文件在編譯時不至於出錯,可以把<merge>當成<FrameLayout>使用;
3.圖像資源
在圖像資源中可以存儲圖像文件,還可以使用xml格式的圖像資源來控制項圖像的狀態和行為;
>>1.普通圖像資源
Drawable da = getResources().getDrawable(R.drawable.xxx);
>>2.xml圖像資源
xml圖像資源其實就是在drawable目錄中指定的xml文件,此種方式可以額外指定圖像的某些屬性,如圖像拉動、排列方式;
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="repeat" >
</bitmap>
>>3.Nine-Patch圖像資源
Nine-Patch圖像資源文件必須以9.png作為文件擴展名,如abc.9.png
該圖像資源的主要作用是:防止圖像的某一部分被拉伸;確定將圖像作為背景圖的控制項中內容顯示的位置;
Android SDK本身提供了一個Draw 9-patch的工具,啟動<sdk目錄>\tools\draw9patch.bat命令啟動該工具;
可以通過此工具在png圖的四周繪制1個像素粗的直線,上邊緣和左邊緣的直線分別表示圖像在水平和垂直方向可位值的范圍。如果水平或垂直方向的某個區域不需要拉伸,則可不繪制相應的直線;右邊緣和下邊緣的直線分別表示圖像所在控制項中內容的顯示範圍,內容只在右邊緣和下邊緣繪制直線的區域顯示,表示內容顯示範圍和拉伸范圍的兩給直線有一個重要區別就是表示內容顯示範圍的直線中間不能斷開,而表示拉伸范圍的直線中間可以斷開;
Nine-Patch圖像資源與普通圖像資源引用方法相同,在引用時只寫文件名,活力.9.png;
>>4.XML Nine-Patch圖像資源
Nine-Patch圖像資源也有與其對應的xml圖像資源,使用<nine-patch>標簽來引用Nine-Patch格式的圖像,有一個設置抖動的android:dither屬性;
>>5.圖層資源
圖層資源類似於<FrameLayout>不同的是<FrameLayout>標簽中可以包含任意的控制項,而圖層資源每一層都只有是圖像,定義圖層資源必須使用<layer-list>作為資源文件的根節點,<layer-list>標簽中包含多個<item>標簽,每一個標簽表示一個圖像,最後一個<item>標簽顯示在最頂層;
默認情況下,圖像會盡量充滿顯示圖像的范圍,圖像可能會有拉伸,為了避免圖像拉伸,可以在<item>標簽中使用<bitmap>標簽引用圖像;
復制代碼
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="10dip" 底端偏移的像素
android:left="10dip" 左側偏移的像素
android:right="10dip" ...
android:top="10dip"> ...
<bitmap
android:gravity="center"
android:src="@drawable/hell" />
</item>
</layer-list>
復制代碼
某些情況下,可以使用圖層來代替<FrameLayout>
>>6.圖像狀態資源,處理控制項不同狀態下的顯示狀態
復制代碼
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bm" android:state_focused="true"></item>
<item android:drawable="@drawable/bm" android:state_pressed="true"></item>
<item android:drawable="@drawable/bm"></item>
</selector>
// android:state_focused/pressed設置為true表示當前item的drawable屬性為獲取焦點和按下時的drawable樣式
復制代碼
>>7.圖像級別(Level)資源
圖像資源狀態只能指定幾種有限的狀態,可以通過圖像級別指定更多的狀態;圖像級別是一個整數的區間,可以通過ImageView.setImageLevel或Drawable.setLevel方法切換不同狀態的圖像;圖像級別資源是xml文件,必須以<level-list>為根節點,每一個item表示一個級別區間,下面是一個xml文件;通過ImageView.setImageLevel(level),根據level所在的區間設定顯示的圖像資源,如果level不在任一區間內則清空ImageView當前圖像;
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" />
<item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" />
</level-list>
>>8.淡入淡出(Cross-fade)資源
也是切換兩個圖像(不支持多於兩個圖像的切換),並且使這兩個圖像以淡入淡出效果進行切換,如電燈在開關時逐漸變亮或逐漸變暗;
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/hell"/>
<item android:drawable="@drawable/hell"/>
</transition>
TransitionDrawable da = ...;
// 從第一張圖片切換到第二張圖片,時間效果為1秒
da.startTransition(1000);
// 從第二張圖片切換到第一張圖片,時間效果為1秒
da.reverseTransition(1000);
>>9.嵌入(insert)圖像資源
使用場景:要顯示的圖像要求要小於裝載圖像的View(圖小於View區域),也是通過xml資源定義,只有一個節點inset。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:insetLeft="10dip" > <!--圖像距離左邊的距離,延伸-->上/下/右的距離-->
</inset>
>>10.剪切(Clip)圖像資源,使用剪切圖像資源可以只顯示圖像的一部分,如可以通過此來製作進度條;
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal" // 指定截取的方向
android:drawable="@drawable/hell" // 指定要截取的圖像
android:gravity="left" > // 指定截取的方式,在此為從左側開始截取
</clip>
ClipDrawable cd = ...;
cd.setLevel(1000);
上面ClipDrawable.setLevel(level)設置截取的圖像寬度,ClipDrawable預設了最大值10000(表示不進行截取),最小值為0(表示不顯示);
>>11. 比例(Scale)圖像資源
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:scaleGravity="center" // 設置圖像顯示的位置
android:scaleHeight="70%" // 設置圖像顯示的高度
android:scaleWidth="80%" > // 設置圖像顯示的寬度
</scale>
>>12.形狀資源
復制代碼
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > shape可以指定就矩形,oval(橢圓),line(直線),ring(圓)
<corners> 定義圓角
</corners>
<gradient
android:angle="45"
android:startColor="#000000"
android:endColor="#FFFFFF" > 定義顏色漸變,從左下角到或上角
</gradient>
<padding> 定義控制項內容到邊框的距離
</padding>
<stroke> 定義邊線
</stroke>
<solid> 定義填充
</solid>
<size> 定義大小
</size>
</shape>
復制代碼
13.菜單資源
菜單不僅可以在onCreateContextMenu或onCreateOptionsMenu方法中通過代碼創建,還可以在res/menu目錄中建立相應的菜單資源文件,並在上面兩個方法中載入菜單資源;
菜單資源文件必須以<menu>標簽作為根節點,每一個菜單項用一個<item>表示,如果要定義子菜單,可以在<item>標簽中包含<menu>標簽;如果想將多個菜單項劃為一組,可以使用<group>包含多個<item>標簽;
復制代碼
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
復制代碼
查看MenuInflater.inflate(int,Menu)
復制代碼
/**
* Inflate a menu hierarchy from the specified XML resource.
*
* @param menuRes Resource ID for an XML layout resource to load (e.g., <code>R.menu.main_activity</code>)
* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.
*/
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {
parser = mContext.getResources().getLayout(menuRes);
AttributeSet attrs = Xml.asAttributeSet(parser);
parseMenu(parser, attrs, menu);
} catch ...finally {
if (parser != null) parser.close();
}
}
復制代碼
14.樣式與主題(style/theme)
>>1.樣式style
android中樣式和css中樣式作用是一樣的,都是用於為界面元素定義顯示風格,它是一個包含一個或者多個控制項屬性的集合。
定義樣式需要在res/values/styles.xml中進行定義,如下是一個樣式的定義:
<style name="textViewStyle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="textViewStyle1" parent="textViewStyle"></style><!-- 此樣式繼承自textViewStyle -->
<style name="textViewStyle.Livingstone"><!-- 樣式繼承的另一種寫法,但不可用此寫法繼承Android自帶的定義樣式? -->
<item name="android:textColor">#00FF00</item>
</style>
所有定義的樣式都會在R文件中自動生成一個資源ID,加一個點表示樣式繼承會生成上圖所示的資源id;
樣式的引用:
<TextView
style="@style/textViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
>>2.主題Theme
主題應用於整個應用或者activity,樣式應用於具體的控制項上。主題的應用與樣式定義一樣,不同的是主題還可以設置窗口的顯示風格;主題的引用需要在清單文件中進行引用,如引用到整個應用之上就需要在Application節點中進行配置引用,而引用到單個Activity只需要在此Activity中進行配置引用;
復制代碼
<style name="Livingstonetheme"><!--此定義是一個無Title的主題-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">?android:windowNoTitle</item>
<!-- 問號表示引用此主題中android:windowNoTitle屬性的值 -->
<item name="android:textSize">18sp</item>
</style>
復制代碼
android系統定義了一些屬性,如android:theme="@android:style/Theme.Dialog",該主題可以讓Activity看起來像一個對話框,更多主題可以在文檔reference->android->R.style中查看。當主題裡面的樣式屬性值與樣式裡面的屬性值發生沖突的時候會顯示樣式裡面的值;
15.其它資源
在資源文件中還可以包括尺寸(dimen)、整數(integer)、布爾(bool) 、整形數組資源(integer-array)、資源數組(array)、顏色(color)
TypedArray ta = getResources().obtainTypedArray(int id); // 獲取數組資源,包括integer-array、array
Final總結:
除了res/values目錄中的資源名,其它目錄的資源都會以文件名在R類的相應子類中生成變數;而res/values中的資源會以name屬性值為變數名在R類的相應子類中生成變數;