編輯:關於Android編程
Material Design 運用了格式塔原理,尤其是在圖形的設計上。
格式塔理論是心理學中為數不多的理性心理學之一。格式塔學派以某些相當抽象的,與知覺和思維的性質以及心理經驗的結構有關的觀念解釋了熟悉的觀察資料。
格式塔心理學派斷言:人們在觀察時,眼腦並不是在一開始就區分一個形象的各個單一的組成部分,而是將各個部分組成起來,使之成為一個更易於理解的整體。此外,他們堅持認為,在一個格式塔(即一個單一視場,或單一參照系)內,眼睛的能力只能接受少數幾個不相關聯的整體單位。這種能力的強弱取決於這些整體單位的不同與相似,以及它們之間的相關位置。如果一個格式塔中包含了太多的互不相關的單位,眼腦就會試圖簡化,把各個單位加以組合,使之成為易於處理的整體。如果辦不到這一點,整體形象將繼續呈現無序狀態或混亂,從而無法被正確認知,簡單的說就是看不懂或無法接受。格式塔理論明確提出:眼腦作用是一個不斷組織,簡化,統一的過程,正是通過這一過程,才產生出易於理解,協調的整體。
格式塔心理學主要有五個原則:
1. Proximity 接近
2. Similarity 相似
3. Closure 閉合
4. Continually 連續
5. Simplicity 簡單
Gestalt laws of grouping 又被稱為Principles of grouping
關於元素組件之間的布局,可按照一定的原則來設計。
1. 使用8dp的網格來對齊組件,即圖像,圖標的大小,間距,外邊框,內邊框都是8dp的整數
2. 使用4dp的網格來對齊文字,即文本高度是4dp的整數。
3. 這些8dp和4dp的網格,允許我們很輕松的就運用上面介紹的分組定律即laws of grouping,使我們的UI有序,平衡,並且和操作協調的其他部分協調一致。
4. 關鍵線用來在用戶界面中垂直或水平對齊組件對象。從美學上來講,關鍵線使得UI井然有序,也能更快速的掃描屏幕並接受信息。常用的關鍵線,對於圖片和頭像等輔助的對象,經常使用從左到右16dp的外邊框;而對於標題和內容等主要內容,則使用從左到右72dp的外邊框。如果沒有輔助內容,那麼主要內容也應該從左到右16dp的外邊框。
假設我們要使用一個靛藍色為主色,而粉紅色為強調色的風格,那麼我們應該如何進行配置呢
4.1. 添加顏色到資源文件中
#7986CB
#3551B5
303F9F
#FF4081
4.2. 應用到主題中
4.3 使用這些色彩
注意:這裡為什麼使用?colorPrimary而不直接使用那個顏色值比如:@color/indigo_500。
這裡?colorPrimary表示使用主題中的本地屬性的值,也可以將其改為?attr/colorPrimary
除了可以定制material design 主題的這三個色彩,我們還可以定制android:statusBarColor ,windowBackground ,navigationBarColor等,參考官方文檔
從圖像中提取色彩
我們可以根據一張圖片利用com.android.support.palette來提取一張圖片的重要的色彩。
首先:
build.gradle 文件添加依賴
...
dependencies {
...
compile 'com.android.support:palette-v7:23.4.0'
}
其次:
private void processPalette(){
Bitmap bitmap = BitmapFactory.decodeResource(getResource(), R.drawable.xk);
Palette p = Palette.form(bitmap).generate(new Palette.PaletteAsyncListner(){
@override
public void onGenerated(Palette p){
}
});
}
生成material design palette 展示material design 設計
加載自定義字體
首先將字體放在assets文件夾中,如assets/NotoSans-Bold.ttf在代碼中加載字體
@override
protected void onCreate(Bundle savedInstanceState){
Typeface myTypeface = Typeface.createFromAssets(getAssets(), "NotoSans-Bold.ttf");
TextView tv = (TextView)findViewById(R.id.text1);
tv.setTypeface(myTypeface);
}
圖片的縮放,ImageView.ScaleType: 三個Center,四個Fit,一個Matrix:
圓形的圖片
通常我們會使用到圓形的圖片來作為用戶的頭像等,介紹material design 庫來生成圓形的圖片:
public void createRoundDrawable(Bitmap bitmap){
RoundedBitmapDrawerable drawable = RoundedBitmapDrawerableFactory.create(context.getResources(),bitmap);
drawable.setCircular(true);
}
寬高固定比的ImageView,例如寬:高 = 3: 2
創建一個類繼承ImageView
class ThreeTowImageView extends ImageView {
public void ThreeTowImageView(Context context){
super(context);
}
pulic void ThreeTowImageView(Context context, Attributes attrs){
super(context, attrs);
}
public ThreeTowImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ThreeTowImageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void onMeasure(int widthSpec, int heightSpec){
int threeTowHeight = MeasureSpec.getSize(widthSpec) * 2 / 3;
int threeTowHeighSpec = MeasureSpec.makeMeasureSpec(threeTowHeight, MeasureSpec.EXACTLY);
super.onMeasure(widthSpec, threeTowHeightSpec);
}
}
在xml中使用
背景保護
當圖片作為背景的時候,圖片上的文字或者圖標有可能會因為色彩相近而讓用戶很難辨別清楚,這是時候最好在xml中處理一下,即在圖片上添加一層漸變色。
創建漸變
使用到xml布局中
<framelayout ...="">
</framelayout>
內存洩露,是Android開發者最頭疼的事。可能一處小小的內存洩露,都可能是毀千裡之堤的蟻穴。 怎麼才能檢測內存洩露呢? AndroidStudio 中Memory控件台
在一些電子商務網站上經常能夠看到一些滾動的廣告條,許多軟件在首次使用時也有類似的廣告條,如圖:其實在github上有實現這種效果的控件,不過這東西做起來也是很簡單,我們今
經過前面兩篇文章的學習,我想大家對ActionBar都已經有一個相對較為深刻的理解了。唯一欠缺的是,前面我們都只是學習了理論知識而已,雖然知識點已經掌握了,
前段時間做了一個Android會議管理系統,項目需求涉及到EditText的圖文混排,如圖:在上圖的”會議詳情”中,需要支持文本和圖片的混合插入,