1、Material Design概述
我們挑戰自我,為用戶創造了嶄新的視覺設計語言。與此同時,新的設計語言除了遵循經典設計定則,還汲取了最新的科技,秉承了創新的設計理念。這就是原質化設計(Material Design)。這份文檔是動態更新的,將會隨著我們對 Material Design 的探索而不斷迭代、升級。
目標
我們希冀創造一種新的視覺設計語言,能夠遵循優秀設計的經典定則,同時還伴有創新理念和新的科技。
我們希望創造一種獨一無二的底層系統,在這個系統的基礎之上,構建跨平臺和超越設備尺寸的統一體驗。遵循基本的移動設計定則,同時支持觸摸、語音、鼠標、鍵盤等輸入方式。
設計原則
實體感就是(通過設計方式來表達)隱喻
通過構建系統化的動效和空間合理化利用,并將兩個理念合二為一,構成了實體隱喻。與眾不同的觸感是實體的基礎,這一靈感來自我們對紙墨的研究,但是我們相信,隨著科技的進步,應用前景將不可估量。
實體的表面和邊緣提供基于真實效果的視覺體驗,熟悉的觸感讓用戶可以快速地理解和認知。實體的多樣性可以讓我們呈現出更多反映真實世界的設計效果,但同時又絕不會脫離客觀的物理規律。
光效、表面質感、運動感這三點是解釋物體運動規律、交互方式、空間關系的關鍵。真實的光效可以解釋物體之間的交合關系、空間關系,以及單個物體的運動。
鮮明、形象、深思熟慮
新的視覺語言,在基本元素的處理上,借鑒了傳統的印刷設計——排版、網格、空間、比例、配色、圖像使用——這些基礎的平面設計規范。在這些設計基礎上下功夫,不但可以愉悅用戶,而且能夠構建出視覺層級、視覺意義以及視覺聚焦。精心選擇色彩、圖像、選擇合乎比例的字體、留白,力求構建出鮮明、形象的用戶界面,讓用戶沉浸其中。
Material Design設計語言強調根據用戶行為凸顯核心功能,進而為用戶提供操作指引。
有意義的動畫效果
動畫效果(簡稱動效)可以有效地暗示、指引用戶。動效的設計要根據用戶行為而定,能夠改變整體設計的觸感。
動效應當在獨立的場景呈現。通過動效,讓物體的變化以更連續、更平滑的方式呈現給用戶,讓用戶能夠充分知曉所發生的變化。
動效應該是有意義的、合理的,動效的目的是為了吸引用戶的注意力,以及維持整個系統的連續性體驗。動效反饋需細
2、MaterialDesign的使用及開發
谷歌開放以及收集了一些最新的開源的項目(很多是自己開發的),匯集到最新的support兼容支持包以及最新的5.X API里面。
(preference:設置頁面,可以通過配置文件達到界面設計的效果。)
1)android-support-v4:最低兼容到Android 1.6系統,里面有類似ViewPager等控件。
2)android-support-v7:appcompat、CardView、gridlayout、mediarouter、
palette、preference、recyclerView(最低兼容到3.0)
最低兼容到Android 2.1的系統,這個工程可以讓開發人員統一開發標準,在任何的系統版本下保證兼容性。
(比如:Theme,value,布局,新的控件,新的動畫特效實現)
所以現在ADT、AndrodStudio一般都會直接創建項目的時候就直接幫你新建或者引入了一個叫做appcompat的項目。
這里可能會碰到很多問題:
1.自動導入的appcompat-v7項目自身就是報錯的,什么原因?build的版本太低了,要么是SDK很新但是兼容包沒有更新。
2.appcompat-v7好不容易沒報錯,但是項目報錯,一看控制臺:報appcompat里面的某個res/values/theme/xxx屬性不存在 等等問題。
什么原因?因為你引入的是很新的appcompat-v7項目,它要求必須很高的版本編譯,然而Eclipse很蛋疼,在引入該項目的主項目編譯的時候也必須要達到這個很高的版本---直接使用最高版本編譯
現在一般做開發都是最低兼容到4.0。
SDK升級:API升級、兼容包的升級、工具升級。
3、MaterialDesign控制項目全局樣式
1.引入appcompat-v7項目(包括了android-support-v7-appcompat.jar和資源文件)
AS中Module中build.gradle配置
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
}
2.寫自己的全局樣式:
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="colorPrimary">@color/colorPrimary_pink</item>
<item name="colorPrimaryDark">@color/colorPrimary_pinkDark</item>
<item name="android:windowBackground">@color/background</item>
<item name="colorAccent">@color/accent_material_dark</item>
</style>
colorPrimary:主色,
colorPrimaryDark:主色--深色,一般可以用于狀態欄顏色、底部導航欄
colorAccent:(代表各個空間的基調顏色--CheckBox、RadioButton、ProgressBar等等)
特別感謝:
極客學院