Android之MotionLayout(二),MotionScene的標簽屬性說明

目錄

Android之MotionLayout(一),MotionLayout的基本使用
Android之MotionLayout(二),MotionScene的標簽屬性說明
Android之MotionLayout(三),用 MotionLayout 來做過渡動畫,如何使用ConstraintSet
Android之MotionLayout(四),用 MotionLayout實現(xiàn)向上拉的折疊效果
Android之MotionLayout(五),如何使用 MotionLayout的自定義屬性
Android之MotionLayout(六),如果使用Keyframes實現(xiàn)實現(xiàn)YouTube切換效果

上一章中我們簡單創(chuàng)建了一個使用了MotionLayout,而這一遍是對MotionScene的屬性標簽的一些說明

MotionScene的子元素屬性標簽

<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <Transition
        app:constraintSetStart="@layout/activity_main_scene1"
        app:constraintSetEnd="@layout/activity_main_scene2"
        app:duration="1000">

        <OnClick
            app:clickAction="toggle"
            app:targetId="@id/image" />

    </Transition>

</MotionScene>
  • <Transition> 包含運動的基本定義。

    • motion:constraintSetStart 和 motion:constraintSetEnd 指的是運動的端點。這些端點在 MotionScene 后面的 <ConstraintSet> 元素中定義。
    • motion:duration 指定完成運動所需的毫秒數(shù)
  • <OnClick> 點擊觸發(fā)運動

  • <OnSwipe> 拖拽來控制運動。

    • motion:touchAnchorId 可以滑動并拖動的視圖。

    • motion:touchAnchorSide 表示我們從右側(cè)拖動視圖。

    • motion:dragDirection 表示拖動的進度方向。例如,motion:dragDirection="dragRight" 表示當(dāng)您向右拖動時,進度會增加。

  • <ConstraintSet>

<Transition>

  • app:targetId:【id 值】設(shè)置用來觸發(fā)過渡的那個 View 的 Id(例如:@id/image 或 @+id/image)。

提示:app:targetId 的值的前綴既可以是 @+id/ 也可以是 @id/,兩者都可以。官方示例中使用的是 @+id/。不過,使用 @id/ 前綴似乎更加符合語義,因為 @+id/ 前綴在布局中常用來創(chuàng)建一個新的 Id,而 @id/ 前綴則常用來引用其他的 Id 值。為了突出這里引用的是其他的 Id 而不是新建了一個 Id,使用 @id/ 前綴要更加符合語義。

  • app:clickAction:設(shè)置點擊時執(zhí)行的動作。該屬性共有以下 5 個可選的值:

toggle:在 Start 場景和 End 場景之間循環(huán)的切換。
transitionToEnd:過渡到 End 場景。
transitionToStart:過渡到 Start 場景。
jumpToEnd:跳到 End 場景(不執(zhí)行過渡動畫)。
jumpToStart:跳到 Start 場景(不執(zhí)行過渡動畫)。

<OnSwipe>

  • app:touchAnchorId:【id 值】設(shè)置拖動操作要關(guān)聯(lián)到的對象,讓觸摸操作看起來像是在拖動這個對象的由 app:touchAnchorSide 屬性指定的那個邊。
  • app:touchAnchorSide:設(shè)置觸摸操作將會拖動對象的哪一邊,共有以下 4 個可選值:

top
left
right
bottom

  • app:dragDirection:設(shè)置拖動的方向(注意,只有設(shè)置了 app:touchAnchorId 屬性后該屬性才有效)。共有以下 4 個可選值:

dragUp:手指從下往上拖動(↑)。
dragDown:手指從上往下拖動(↓)。
dragLeft:手指從右往左拖動(←)。
dragRight:手指從左往右拖動(→)。

  • app:maxVelocity:【浮點值】設(shè)置動畫在拖動時的最大速度(單位:像素每秒 px/s)。
  • app:maxAcceleration:【浮點值】設(shè)置動畫在拖動時的最大加速度(單位:像素每二次方秒 px/s^2)。

注意:可以同時設(shè)置 <OnClick> 與 <OnSwipe> ,或者都不設(shè)置,而是使用代碼來觸發(fā)過渡。
還可以在 <Transition> 元素中設(shè)置多個 <OnClick>,每個 <OnClick> 都可以關(guān)聯(lián)到一個不同的控件上。雖然 <Transition> 元素中也可以設(shè)置多個 <OnSwipe>,但是后面的 <OnSwipe> 會替換掉前面的 <OnSwipe>,最終使用的是最后一個 <OnSwipe>。

<ConstraintSet>

子元素定義一個場景約束集,并在 <ConstraintSet> 元素中使用 <Constraint> 元素定義單個 View 的屬性約束。

  • android:id:設(shè)置當(dāng)前約束集的 id。這個 id 值可被 <Transition> 元素的 app:constraintSetStart 或者 app:constraintSetEnd 引用。
<Constraint> 元素屬性說明:

android:id:當(dāng)前約束關(guān)聯(lián)到的那個 View 的 id。
app:transitionEasing:定義動畫到此點時使用的緩動曲線,該值可以是一個字符串(例如 "curve(1.0,0,0,1.0)")還可以是以下幾個枚舉值之一:

standard:標準
accelerate:加速
decelerate:減速
linear:線性

app:transitionPathRotate:【浮點值】相對于所采用的路徑旋轉(zhuǎn)對象(弧形路徑/關(guān)鍵幀 相關(guān))。
app:drawPath:繪制過渡動畫路徑(調(diào)試用,關(guān)鍵幀相關(guān))??梢允且韵聨讉€枚舉值之一:

none
path
pathRelative
deltaRelative
asConfigured
rectangles

app:progress:【浮點值】在關(guān)聯(lián)的 View 上調(diào)用 setProgress(float) 方法(用于與嵌套的 ConstraintLayout 交互)

<Constraint> 元素用來定義單個 View 的屬性約束

<Constraint> 元素用來定義單個 View 的屬性約束,它支持對 View 的所有 ConstraintLayout 屬性定義約束,以及對 View 的下面這些標準屬性定義約束:

android:visibility
android:alpha
android:elevation
android:rotation
android:rotationX
android:rotationY
android:scaleX
android:scaleY
android:translationX
android:translationY
android:translationZ

當(dāng) View 的標準屬性或者 ConstraintLayout 屬性發(fā)生改變時,MotionLayout 會自動應(yīng)用過渡動畫,下一節(jié)我們會講一下如果使用ConstraintSet來做一個過渡動畫

(每天學(xué)習(xí)一點點.每天進步一點點,分享不宜路過點個贊呀,喜歡的點個關(guān)注后續(xù)更新不斷)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 昨晚跟往常一樣,飯后開了一局王者榮耀,前中期基本焦灼,到了后期一波決定勝負的時候,我果斷射箭,射中對面,配合...
    積木zz閱讀 919評論 0 5
  • 1、概述 I / O '18提到了MotionLayout,當(dāng)時還沒有正式發(fā)布前段時間,在今年的6月26日正式發(fā)布...
    高丕基閱讀 28,012評論 15 88
  • 久違的晴天,家長會。 家長大會開好到教室時,離放學(xué)已經(jīng)沒多少時間了。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,870評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,918評論 0 11
  • 可愛進取,孤獨成精。努力飛翔,天堂翱翔。戰(zhàn)爭美好,孤獨進取。膽大飛翔,成就輝煌。努力進取,遙望,和諧家園??蓯塾巫?..
    趙原野閱讀 3,551評論 1 1

友情鏈接更多精彩內(nèi)容