Android動畫<第五篇>:觸摸反饋動畫

觸摸反饋在用戶和UI元素交互的點(diǎn)提供瞬時視覺確認(rèn)督怜。例如,當(dāng)按鈕被觸摸時顯示一個水波紋效果侣滩。 這是 Android 5.0 默認(rèn)的觸摸反饋動畫摊册。

下圖就是一個按鈕默認(rèn)的觸摸反饋動畫--水波紋動畫

19.gif
(1)系統(tǒng)自帶的兩個 Ripple 波紋效果
//有邊界
?android:attr/selectableItemBackground
//無邊界 (要求API21以上)
?android:attr/selectableItemBackgroundBorderless 

使用時只需要把上面這兩個值作為 View 的 android:background="" 或 android:foreground="" 即可(如果已經(jīng)有背景, 可以設(shè)置到前景屬性中)篙贸。同時如果想要效果顯示出來要保證 View 是可點(diǎn)擊的(比如控件本身可點(diǎn)擊投队、或者給控件設(shè)置點(diǎn)擊事件、 或給控件設(shè)置 android:clickable="true")爵川。

動畫的顏色是系統(tǒng)默認(rèn)的敷鸦,您可以手動去設(shè)置這個顏色值,只需要在AppTheme添加如下屬性即可:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:colorControlHighlight">#B8BD8B</item>
</style>

效果如下:

20.gif
(2)自定義 Ripple 波紋效果

[無邊界]

在drawable中添加ripple_ani.xml文件

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:radius="50dp"
    android:color="#4285f4">
</ripple>

在按鈕中設(shè)置背景:

    <Button
        android:id="@+id/bt_recycleview"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:textSize="14sp"
        android:background="@drawable/ripple_ani"
        android:layout_centerHorizontal="true"
        android:text="111"/>

ripple只能運(yùn)用于Android5.0之后的版本寝贡,所以還請?jiān)赿rawable-v21中做適配

圖片.png

效果如下:

21.gif

上圖是沒有邊界的效果扒披,無邊界的ripple會覆蓋按鈕原本的背景顏色,所以上圖是看不到按鈕的背景色的圃泡,那么為ripple添加邊界的效果是怎樣的呢碟案?

[有邊界]

在布局中添加邊界

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:radius="50dp"
    android:color="#4285f4">

    <!-- 添加邊界 -->
    <item android:drawable="@color/colorPrimary"/>

</ripple>

效果如下:

22.gif
(3)結(jié)合selector
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:radius="50dp"
    android:color="#4285f4">

    <!-- 添加邊界 -->
    <item>
        <selector>
            <item
                android:drawable="@color/bt_1"
                android:state_pressed="true">
            </item>
            <item
                android:drawable="@color/bt_2"
                android:state_pressed="false">
            </item>
        </selector>
    </item>

</ripple>

效果如下:

23.gif
(4)結(jié)合shape
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:radius="50dp"
    android:color="#4285f4">

    <!-- 添加邊界 -->
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="20dp"/>
            <solid android:color="@color/bt_2"/>
        </shape>
    </item>

</ripple>

效果如下:

24.gif
(5)注意點(diǎn)

ripple是在Android5.0之后才有的,我們需要做一下兼容

就拿第四點(diǎn)來舉例颇蜡。

在drawable-v21目錄下新建文件ripple_ani.xml价说,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:radius="50dp"
    android:color="#4285f4">

    <!-- 添加邊界 -->
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="20dp"/>
            <solid android:color="@color/bt_2"/>
        </shape>
    </item>

</ripple>

在drawable目錄下新建文件ripple_ani.xml,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="20dp"/>
    <solid android:color="@color/bt_2"/>
</shape>
參考

https://github.com/OCNYang/Android-Animation-Set/tree/master/ripple-animation

[本章完...]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澡匪,一起剝皮案震驚了整個濱河市熔任,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唁情,老刑警劉巖疑苔,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異甸鸟,居然都是意外死亡惦费,警方通過查閱死者的電腦和手機(jī)兵迅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薪贫,“玉大人恍箭,你說我怎么就攤上這事∏剖。” “怎么了扯夭?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鞍匾。 經(jīng)常有香客問我交洗,道長,這世上最難降的妖魔是什么橡淑? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任构拳,我火速辦了婚禮,結(jié)果婚禮上梁棠,老公的妹妹穿的比我還像新娘置森。我一直安慰自己,他們只是感情好符糊,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布凫海。 她就那樣靜靜地躺著,像睡著了一般濒蒋。 火紅的嫁衣襯著肌膚如雪盐碱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天沪伙,我揣著相機(jī)與錄音瓮顽,去河邊找鬼。 笑死围橡,一個胖子當(dāng)著我的面吹牛暖混,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翁授,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼拣播,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了收擦?” 一聲冷哼從身側(cè)響起贮配,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塞赂,沒想到半個月后泪勒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年圆存,在試婚紗的時候發(fā)現(xiàn)自己被綠了叼旋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡沦辙,死狀恐怖夫植,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情油讯,我是刑警寧澤详民,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站撞羽,受9級特大地震影響阐斜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诀紊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隅俘。 院中可真熱鬧邻奠,春花似錦、人聲如沸为居。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒙畴。三九已至贰镣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膳凝,已是汗流浹背碑隆。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬音,地道東北人上煤。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像著淆,于是被迫代替她去往敵國和親劫狠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容