国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

詳解Android Material設(shè)計(jì)中陰影效果的實(shí)現(xiàn)方法

2019-12-12 06:40:07
字體:
供稿:網(wǎng)友

View可以投下的陰影,一個(gè)View的elevation值決定了它的陰影的大小和繪制的順序。可以設(shè)置一個(gè)視圖的elevation,在布局中使用屬性:android:elevation

<TextView  android:id="@+id/my_textview"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="@string/next"  android:background="@color/white"  android:elevation="5dp" />

新的translationz屬性使您能夠創(chuàng)建一個(gè)反映了暫時(shí)的elevation變化的動(dòng)畫。elevation的變化可在響應(yīng)觸摸手勢(shì)時(shí)可能是有用的。
每個(gè)View的elevation值,相當(dāng)于z屬性,它決定了陰影的大小:z越大,陰影越大。
Views僅僅在z=0的平面上才會(huì)投影;它們不會(huì)投影在放置在它們下面和上面的的其他Views上。
使用較高z值的Views會(huì)阻隔使用較低z值的Views。
然而,一個(gè)View的Z值不會(huì)影響View的大小。
elevation有利于創(chuàng)建 在組件需要臨時(shí)上升到View的平面之上做一些操作時(shí) 的動(dòng)畫。
更多關(guān)于elevation的介紹,詳見http://www.google.com/design/spec/what-is-material/elevation-shadows.html

Assign Elevation to Your Views  在Views中指定Elevation
Z值包含兩個(gè)成分:elevation和translation。elevation是一個(gè)靜態(tài)的成分,translation使用了動(dòng)畫:Z = elevation + translationZ

201647152939430.jpg (1126×486)

在layout中設(shè)置elevation,使用android:elevation屬性。在代碼中設(shè)置,使用View.setElevation()方法。
設(shè)置一個(gè)View的translation,使用View.setTranslationZ()方法。
ViewPropertyAnimator.z()和ViewPropertyAnimator.translationZ() 能使你更輕易的推動(dòng)Views的elevation。
您還可以使用一個(gè)StateListAnimator指定這些動(dòng)畫聲明的方式。在狀態(tài)改變觸發(fā)動(dòng)畫的情況下,這是特別有用的,比如當(dāng)用戶按下一個(gè)按鈕時(shí)。

Customize View Shadows and Outlines  自定義View的陰影和輪廓
View的背影圖片的邊界確定了陰影的默認(rèn)圖形。輪廓代表一個(gè)圖形對(duì)象的外部形狀和定義的用于觸摸反饋的波紋區(qū)域。
參考:

 <TextView  android:id="@+id/myview"  ...  android:elevation="2dp"  android:background="@drawable/myrect" />

背景圖片可以定義成一個(gè)圓角的矩形

 <!-- res/drawable/myrect.xml --><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">  <solid android:color="#42000000" />  <corners android:radius="5dp" /></shape>

因?yàn)楸尘皥D片定義了View的輪廓(outline),所以View會(huì)投放一個(gè)使用了圓角的陰影。提供一個(gè)自定義的輪廓重寫View的默認(rèn)陰影圖形。
自定義輪廓在代碼中:

  • 繼承自ViewOutlineProvider
  • 重寫getOutline()
  • 使用View.setOutlineProvider(),指派新的輪廓

使用Outline類的一些方法,創(chuàng)建圓角矩形和橢圓的輪廓。默認(rèn)的outline provider 包含了View的背影輪廓。阻止一個(gè)View的投影,可以設(shè)置View的ouline provider 為null。

Clip Views  裁剪

剪裁視圖使您能夠輕松地更改視圖的形狀。你可以統(tǒng)一裁剪成使用了其他設(shè)計(jì)元素,或在響應(yīng)用戶輸入時(shí)改變View的形狀。可以裁剪View的外部輪廓區(qū)域,使用View.setClipToOutline()或者android:clipToOutline屬性。只有矩形、圓形、圓角矩形支持輪廓的裁剪,由Outline.canClip()方法來確定。
當(dāng)要裁剪成一個(gè)圖片的形狀時(shí),需要設(shè)置該圖片為View的背景,并調(diào)用View.setClipToOutline()。
裁剪是一個(gè)奢侈的操作,不要使用動(dòng)態(tài)圖形來裁剪。為了實(shí)現(xiàn)這種效果,可以使用動(dòng)畫來展現(xiàn)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆城县| 梅州市| 荥阳市| 平顶山市| 白山市| 桃源县| 娄底市| 长治市| 海阳市| 祁阳县| 水城县| 靖安县| 高台县| 于都县| 扶绥县| 屏东市| 师宗县| 连平县| 洱源县| 汨罗市| 珠海市| 定边县| 茂名市| 阳春市| 苏尼特左旗| 浦东新区| 山东省| 双柏县| 保德县| 嘉兴市| 庆云县| 汾西县| 佛坪县| 昌都县| 玛曲县| 拜城县| 海林市| 鞍山市| 乐陵市| 南昌县| 怀化市|