91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

聊一聊Android中的StateListAnimator

發布時間:2020-10-01 19:21:53 來源:腳本之家 閱讀:196 作者:Hevin 欄目:移動開發

簡評:使用 StateListAnimator 輕松實現 Material Design 效果。

Material Design 中最基礎的一條原則就是 'motion provides meaning',也就是當用戶和你的 app 交互時應當提供合理的視覺反饋。標準做法是使用官方提供的 StateListDrawable 來為控件實現交互效果。

StateListAnimator 是和 Material Design 一同在 API 21 引入的,可以用來方便的實現交互反饋的視覺效果,今天這篇文章就講解了 StateListAnimator 的用法。

在以前,我們處理 Button,TextView 等控件的點擊效果時,通常是定義一個 selector,為按下和普通情況分別設置顏色。但這樣的效果一方面不夠動人,另一方面也不符合 Material Design 的規范。

Material Design 規范推薦 Button 等控件應當以材質的方式表現,當接觸到手指時上升。因此 Material Design 對組件有了 z 軸這個概念,也就是高度。z 值越大,組件離界面底層(水平面)越遠,投影越重。

那我們怎么來實現組件在 z 軸(高度)上的變化效果呢?這就需要用到今天講到的 StateListAnimator 了。

首先,讓我們創建一個 animator 資源文件夾,在其中創建一個 selector_animator.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true">
 <set>
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="scaleX"
  android:valueTo="1.025"
  android:valueType="floatType" />
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="scaleY"
  android:valueTo="1.025"
  android:valueType="floatType" />
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="translationZ"
  android:valueTo="4dp"
  android:valueType="floatType" />
 </set>
 </item>
 
 <item>
 <set>
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="scaleX"
  android:valueTo="1.0"
  android:valueType="floatType" />
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="scaleY"
  android:valueTo="1.0"
  android:valueType="floatType" />
  <objectAnimator
  android:duration="@android:integer/config_shortAnimTime"
  android:propertyName="translationZ"
  android:valueTo="0dp"
  android:valueType="floatType" />
 </set>
 </item>
 </selector>

代碼很簡單,當處于按下情況時,組件沿 x, y 軸擴大 1.025 倍并升高 4dp(會在組件四周產生投影效果)。

需要注意其中的 propertyName 屬性目前支持:

  • translationX, translationY: 控制組件沿 x 和 y 軸移動多少距離。
  • rotation, rotationX, rotationY: 繞中心點旋轉,設置 rotation 是 2D 平面旋轉,rotationX 和 rotationY 分別是從屏幕內向屏幕外旋轉和從左到右旋轉,均為 3D 旋轉。
  • scaleX, scaleY: 沿 x, y 軸的縮放比例,設置為 1.5 即 1.5 倍。
  • pivotX, pivotY: 設置組件的中心點在哪里,scale 和 rotation 都會根據設置的中心點來變化,默認為幾何中心。
  • x, y: 組件最終要出現在相對其父容器的位置。
  • alpha: 組件的透明度,值的范圍從 0 到 1,為 0 時完全透明。

然后在 layout 文件中設置組件的 stateListAnimator 值就可以啦:

<TextView
 android:id="@+id/textView"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 ... 
 android:stateListAnimator="@animator/selector_animator" />

因為知乎不支持 gif,感興趣的同學可以點擊原文鏈接查看實現效果。

原文:StateListAnimator

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丰县| 偏关县| 太白县| 朔州市| 崇文区| 纳雍县| 蒙山县| 乌审旗| 游戏| 洪湖市| 沈阳市| 周至县| 遵义市| 和顺县| 江陵县| 白沙| 泗洪县| 中山市| 贡山| 柏乡县| 靖宇县| 淮北市| 神农架林区| 福泉市| 晋宁县| 崇州市| 安阳县| 宁乡县| 通化县| 康马县| 石渠县| 胶南市| 文安县| 永清县| 长寿区| 射阳县| 富川| 仙居县| 河西区| 吴堡县| 龙游县|