RippleDrawable 的簡單使用

2021-07-15 22:45:18 字數 4344 閱讀 2691

rippledrawable 就是乙個自定義觸控反饋動畫。是在 android 5.0 時推出的動畫效果。為了相容低版本,可以在將 元素定義在 drawable-v21 目錄下;

效果如下:

首先定義乙個 statelistdrawable 資源;

button_default.xml :

[html]view plain

copy

xmlversion

="1.0"

encoding

="utf-8"

?>

<

selector

xmlns:android

="">

<

item

android:state_enabled

="false"

android:drawable

="@drawable/disabled"

/>

<

item

android:state_pressed

="true"

android:drawable

="@drawable/selected"

/>

<

item

android:state_focused

="true"

android:drawable

="@drawable/selected"

/>

<

item

android:drawable

="@drawable/fdefault"

/>

selector

>

需要注意 時有序的。android在遍歷烈表時,會返回第乙個狀態完全匹配的 drawable 。所以將常規狀態放在烈表的最底部。

使用一些動畫觸控反饋修飾按鈕示例。使用 元素定義 xml (在 drawable-v21目錄下),可用於構造 rippledrawable;

background_button.xml :

[html]view plain

copy

xmlversion

="1.0"

encoding

="utf-8"

?>

<

ripple

xmlns:android

=""android:color

="#0cc"

>

<

item

android:drawable

="@drawable/button_default"

/>

<

item

android:id

="@android:id/mask"

android:drawable

="@drawable/button_default"

/>

ripple

>

增加尺寸的縮放效果(res/animator 目錄下);

button_press.xml :

[html]view plain

copy

xmlversion

="1.0"

encoding

="utf-8"

?>

<

selector

xmlns:android

="">

<

item

android:state_enabled

="true"

android:state_pressed

="true"

>

<

setandroid:ordering

="together"

>

<

objectanimator

android:duration

="@android:integer/config_shortanimtime"

android:propertyname

="scalex"

android:valueto

="0.8"

android:valuetype

="floattype"

/>

<

objectanimator

android:duration

="@android:integer/config_shortanimtime"

android:propertyname

="scaley"

android:valueto

="0.8"

android:valuetype

="floattype"

/>

set>

item

>

<

item

>

<

setandroid:ordering

="together"

>

<

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"

/>

set>

item

>

selector

>

雖然 xml 結構使用和前面的 button_default.xml 相同的 ,但是在 res/animator 目錄下,表示動畫器例項而非 drawable 的狀態列表集合。

content_main.xml :

[html]view plain

copy

xmlversion

="1.0"

encoding

="utf-8"

?>

<

relativelayout

xmlns:android

=""=""

xmlns:tools

=""android:layout_width

="match_parent"

android:layout_height

="match_parent"

android:paddingbottom

="@dimen/activity_vertical_margin"

android:paddingleft

="@dimen/activity_horizontal_margin"

android:paddingright

="@dimen/activity_horizontal_margin"

android:paddingtop

="@dimen/activity_vertical_margin"

=tools:context

="com.crazy.bitmapxfermode.mainactivity"

tools:showin

="@layout/activity_main"

>

<

button

android:text

="my button"

android:background

="@drawable/background_button"

android:statelistanimator

="@animator/button_press"

android:layout_width

="wrap_content"

android:layout_height

="wrap_content"

/>

relativelayout

>

container of 的的的原理

另外一篇,同樣精彩,揭開linux核心中container of的神秘面紗 華清遠見嵌入式學院講師。在linux 核心中有乙個大名鼎鼎的巨集container of 這個巨集是用來幹嘛的呢?我們先來看看它在核心中是怎樣定義的。呵呵,乍一看不知道是什麼東東。我們先來分析一下container of p...

存在的就是合理的,發生的即是必然的。

筆者有時候會想,什麼是對,什麼是錯?對於追求某一件事情之前首先會考慮,為什麼我要做這件事情。所以經過自我分析和生活周邊環境的總結。我認為,對於乙個人來,這是在站在個體的角度上說。什麼是對的?就是你自己覺得是對的,它就是對的。不過這個只是你自己的想法。主觀上的正確,不代表客觀上也受到了別人的認可。就拿...

Apache的rewrite的重寫相關的引數

apache mod rewrite規則重寫的標誌一覽 使用mod rewrite時常用的伺服器變數 rewriterule規則表示式的說明 匹配任何單字元 chars 匹配字串 chars chars 不匹配字串 chars text1 text2 可選擇的字串 text1或text2 匹配0到1...