Android Meterial Design-Defining Shadows and Clipping Views(定義陰影和裁剪視圖)-(四)

來源:互聯網
上載者:User

Android Meterial Design-Defining Shadows and Clipping Views(定義陰影和裁剪視圖)-(四)

 

Material Design引入了深度的UI元素。深入協助使用者瞭解每個元素的相對重要性,並把注意力集中到手頭上正在做的事情。

一個視圖(控制項),由Z屬性工作表示的高程(elevation),決定了它的影子的大小:有更高的Z值得視圖就具有更大的陰影。視圖僅僅只投下在Z=0平面上的陰影;它們並不投影在在它們下面和上面Z=0平面的其它視圖中。

具有較高Z值視圖(控制項)會擋住較低Z值的視圖。但是,一個視圖的Z值並不會影響到該視圖的大小。

當控制項暫時越過平面視圖執行某些操作時,高程對建立動畫是有用的。

 

在你的視圖(控制項)中指定高程(elevation)

一個視圖的Z值由兩部分組成:高程和轉換。高程是靜態分量,轉換是用於動畫的。

Z = elevation +translationZ

圖一:具有不同elevation屬性值的視圖控制項的陰影

 

要在布局中設定視圖控制項的高程,使用android:elevation屬性。要在代碼中去設定視圖的高程,使用View.setElevation()方法。

要設定一個視圖的轉換(translation),使用View.setTranslationZ()方法。

新的ViewPropertyAnimator.z()和ViewPropertyAnimator.translationZ()方法能讓你輕鬆地進行視圖高程的更改。欲瞭解更多的資訊,請參閱請參閱ViewPropertyAnimator的API文檔和PropertyAnimation(屬性動畫)的開發人員指引。

你也可以使用StateListAnimator以聲明方式來指定這些動畫。對於當狀態改變時觸發動畫的一些情況,這是特別有用的,比如使用者按下了一個按鈕。更多的資訊,請參閱Animate View State Changes(Defining Custom Animations)(未更新)。

Z值是像X和Y值那樣,在同一個(圖形)單位中測量的。

 

自訂視圖陰影和輪廓

一個視圖的背景繪製決定了其陰影的預設圖案。輪廓表示繪圖物件的外部形狀,並限定了觸摸反饋的波紋(ripple)地區。

請看下面的視圖(TextView),定義了背景的圖片資源:


背景資源被定義為帶有圓角的矩形。

        

該視圖控制項蒙上了帶有圓角的陰影,因為背景圖片資源定義了這個視圖的輪廓。提供自訂的輪廓去覆蓋視圖陰影的預設圖案。

在你的代碼中自訂視圖的輪廓:

1. 繼承ViewOutlineProvider類

2. 重寫getOutline() getOutline()方法

3. 使用View.setOutlineProvider()方法分配新的輪廓給你的視圖

通過Outline類裡的方法,你可以建立帶圓角的橢圓和矩形形狀。視圖的預設輪廓提供者(provider)是從視圖的背景來獲得其輪廓的。為了防止為視圖蒙上陰影,設定它的輪廓提供者為空白。


裁剪視圖

裁剪視圖能讓你輕鬆地改變視圖的形狀。你可以為了一致性而使用其它的設計項目裁剪視圖或者為了響應使用者的輸入改變視圖的形狀。你可以使用View.setClipToOutline()方法或者使用android:clipToOutline屬性來裁剪視圖自己的輪廓形狀。只有矩形、圓形、圓角矩形的輪廓支援裁剪,這是由Outline.canClip()方法來決定的。

為了裁剪視圖得到指定的形狀的映像資源,設定視圖的背景資源(如上面所示),並調用View.setClipToOutline方法。

裁剪視圖是一個代價較高的操作,所以不要使形狀看起來生動而去裁剪視圖,實現這樣的效果你應該使用Reveal Effect(Defining Custom Animations)(未更新)動畫。

 

 


demo比較簡單,就上面的兩片代碼就不貼上來了。

 

 

 

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.