TransitionManager影片
在視圖發生更改時,為更改的程序增加影片,更改前為起點,更改結束為終點,
公開方法:
static void beginDelayedTransition(ViewGroup sceneRoot, Transition transition)
方法說明:
開始執行影片方法,以當前視圖為開始,下一個渲染幀為結束,在這個開始和結束的程序中增加影片,
關鍵引數:
sceneRoot:
一般傳入當前視圖的根布局,
Transition:
有四個子類影片:
Autotransition:
自動過度
Explode:
爆炸
Fade:
淡入淡出
Slide:
滑動
多載方法:
static void beginDelayedTransition(ViewGroup sceneRoot)
少了transition引數,transition引數默認為Autotransition影片,
static void endTransitions(ViewGroup sceneRoot)
方法說明:
結束指定場景根上的所有暫停和正在進行的過渡,
MotionLayout影片
MotionLayout是一種布局型別,可以管理程式中的影片運動,它是ConstraintLayout的子類,可以基于其豐富的布局功能構建,在constraintlayout2.0中引入,向后兼容到 API 14級別,
注意事項:
這個影片只能控制布局內的View位置和屬性,沒辦法在影片的程序中替換一個新布局進來,如果是要在影片的程序中替換新布局進來需要用到TransitionManager影片框架,MotionLayout的影片僅適用于其直系子代,不支持嵌套的布局層次結構,MotionLayout的影片是在xml里面用標簽來撰寫的,
使用MotionLayout:
把根布局變為MotionLayout,在到res/xml檔案夾下新建一個xml檔案,檔案名取為xxx(對應的布局檔案名)_scene.xml,之后設定MotionLayout屬性app:layoutDescription="@xml/xxx(剛剛新建的xml檔案)_scene"
MotionLayout布局的關鍵引數:
| 屬性 | 描述 |
|---|---|
| ayoutDescription | 設定描述影片的xml檔案,該檔案一般存放在res/xml檔案夾下面 |
| motionDebug | 是否開啟除錯資訊(NO_DEBUG:不開啟 || SHOW_ALL:顯示所有除錯資訊 || SHOW_PATH:顯示影片的路徑資訊 || SHOW_PROGRESS:顯示影片的當前進度資訊) Java設定的方法為:setDebugMode(MotionLayout.DEBUG_SHOW_PATH + MotionLayout.DEBUG_SHOW_PROGRESS) |
| showPaths | 是否在xml界面開啟預覽影片路徑 |
| motionProgress | 取值為0.0-1.0,代表設定當前初始化影片進度為0%-100%,不能在數字后面加f |
描述影片的xml檔案:
在res/xml檔案夾下新建一個xml檔案,檔案名取為xxx(布局檔案)_scene.xml,描述影片的關鍵標簽為MotionScene,同時也必須是根標簽,示例:
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
</MotionScene>
MotionScene:
| 屬性 | 描述 |
|---|---|
| defaultDuration | 點擊激活影片,執行過渡所需的時間(拖動激活的影片無效),優先級最低 |
| <Transition> | 描述兩個狀態或約束集之間的過渡 |
| <ConstraintSet> | 描述約束集 |
| <StateSet> | 描述系統支持的狀態(可選) |
Transition
| 屬性 | 描述 |
|---|---|
| android:id | 過渡的ID |
| constraintSetStart | 開始約束,用ConstraintSet獲取約束,或從布局檔案中獲取約束 |
| ConstraintSetEnd | 結束約束,用ConstraintSet獲取約束,或從布局檔案中獲取約束 |
| motionInterpolator | 設定整體插值器的能力,只有在<OnClick>生效時才有作用 bounce:結束的時候彈跳 linear:線性,默認值 easeIn:先慢后快 easeOut:先快后慢 easeInOut:結束的時候變慢 |
| duration | 執行過渡所需的時間(只對<OnClick>標簽生效 ) |
| staggered | 浮動:交錯移動物體的快速方法 |
| autoTransition | 自動從一種狀態轉換到另一種狀態,支持關鍵字{none,jumpToStart,jumpToEnd,animateToStart,animateToEnd} |
| <OnSwipe> | 增加了對觸摸處理的支持(和<OnClick>同時存在時不生效) |
| <OnClick> | 增加了對觸發轉換的支持 |
| <KeyFrameSet> | 描述一組Key物件,這些物件可以對影片的關鍵幀做修改,(可選) |
<OnSwipe>
| 屬性 | 描述 |
|---|---|
| touchAnchorId | 使拖動事件作用在全域(隨意指定一個ID即可),同時設定dragDirection屬性才會生效,同時設定touchRegionId,touchAnchorId優先級最高 |
| touchRegionId | 使拖動事件作用在指定View的范圍內(即使該View不可見),同時設定touchAnchorId,touchRegionId不生效 |
| touchAnchorSide | 掃動執行影片進度(非拖拽,手指輕掃立即移開,可在影片執行期間多次掃動來控制影片進度),touchRegionId生效時,touchAnchorSide才會生效 |
| maxVelocity | 限制影片的最大速度(進行中/秒),默認值4 |
| onTouchUp | 拖動松手時,影片向開始/結束移動 autoComplete:距離哪邊最近,就向哪邊移動 autoCompleteToEnd:向結束移動 autoCompleteToStart:向開始移動 decelerate:松手后影片自動滑行一段進度后停止 decelerateAndComplete:松手后影片自動滑行一段進度后,距離哪邊最近,就向哪邊移動 stop:松手后影片進度停止在當前進度 |
| dragDirection | 跟隨手指,平移拖動到哪一側{dragUp | dragDown | dragLeft | dragRight},如果影片的結束進度在右側,設定成dragLeft會無法拖動 |
| maxAcceleration | 影片在修飾時加速(進度/秒/秒)和減速的速度,默認1.2 |
| dragScale | 比例因子以調整滑動,(例如0.5會要求您移動2倍) |
| moveWhenScrollAtTop | 如果滑動是滾動的,并且View(例如RecyclerView或NestedScrollView)同時滾動和過渡 |
| autoComplete | 滑動會自動設定影片以開始或結束,默認為true,警告:關閉此功能并使用時間周期會導致影片連續播放, |
<OnClick>
| 屬性 | 描述 |
|---|---|
| motionTarget | 什么視圖觸發過渡 |
| clickAction | 按鈕移動影片的方向,或(|)的組合:切換,transitionToEnd,transitionToStart,jumpToEnd,jumpToStart |
<KeyFrameSet>
| 屬性 | 描述 |
|---|---|
| <KeyPosition> | 在影片期間控制布局位置 |
| <KeyAttribute> | 在影片期間控制帖子布局屬性 |
| <KeyCycle> | 控制影片期間帖子布局屬性位置的振蕩 |
| <KeyTimeCycle> | 控制影片期間帖子布局屬性時間的振蕩 |
<KeyPosition>
| 屬性 | 描述 |
|---|---|
| motionTarget | 視圖的ID或與layout_ConstraintTag匹配的正則運算式 |
| framePosition | 沿插值點0 =起點100 =終點 |
| transitionEasing | 定義從該點影片時要使用的緩動曲線(例如curve(1.0,0,0,1.0))或關鍵字{standard |
| pathMotionArc | 路徑將以弧形(月蝕)關鍵字{startVertical |
| keyPositionType | 如何計算此關鍵幀的線性路徑偏差{deltaRelative |
| percentX | X軸(deltaRelative)或pathRelative中路徑從起點到終點的(浮動)百分比距離 |
| percentY | (浮動)沿Y軸(deltaRelative)或與pathRelative中的路徑垂直的起點到終點的百分比距離 |
| percentWidth | (浮動)寬度變化的百分比,請注意,如果寬度沒有變化,則此操作無效,它將覆寫sizePercent |
| percentHeight | (浮動)寬度變化的百分比,請注意,如果寬度沒有變化,則此操作無效,它將覆寫sizePercent |
| curveFit | 追蹤路徑 |
| drawPath | 繪制物件布局的路徑對于除錯很有用 |
| sizePercent | 如果視圖更改大小,則這將控制大小的增長方式,(對于固定大小的物件,請使用KeyAttributes scaleX / X) |
| curveFit | 選擇基于直線的路徑或基于單調樣條線的路徑{linear |
<KeyAttribute>
| 屬性 | 描述 |
|---|---|
| motionTarget | 視圖的ID或與layout_ConstraintTag匹配的正則運算式 |
| framePosition | 沿插值點0 =起點100 =終點 |
| curveFit | 選擇基于直線的路徑或基于單調樣條線的路徑{linear |
| transitionEasing | 定義從該點開始影片時要使用的緩動曲線(例如curve(1.0,0,0,1.0))或關鍵字{standard |
| transitionPathRotate | (浮動)相對于所走路徑旋轉物件 |
| drawPath | 畫出布局將設定影片的路徑 |
| motionProgress | 在此視圖上呼叫方法setProgress(float)(用于與嵌套的ConstraintLayouts等對話) |
| <CustomAttribute> | 通過反射呼叫設定的“名稱”方法 |
<CustomAttribute>
| 屬性 | 描述 |
|---|---|
| attributeName | 屬性的名稱,區分大小寫,通過反射方式呼叫,例如設定背景色就是"BackgroundColor" |
| customColorValue | 該值為看起來像setMyAttr(int)的顏色 |
| customIntegerValue | 該值是一個看起來像setMyAttr(int)的整數 |
| customFloatValue | 該值是一個看起來像setMyAttr(float)的float |
| customStringValue | 該值是一個看起來像setMyAttr(String)的字串 |
| customDimension | 該值是一個看起來像setMyAttr(float)的尺寸 |
| customBoolean | 看起來是true還是false的setMyAttr(boolean) |
<KeyTimeCycle>
| 屬性 | 描述 |
|---|---|
| motionTarget | 視圖的ID或與layout_ConstraintTag匹配的正則運算式 |
| framePosition | 沿插值點0 =起點100 =終點 |
| waveShape | 產生{正弦波 |
| wavePeriod | 每秒回圈數 |
| waveOffset | 添加到屬性的偏移值 |
| transitionPathRotate | 應用于相對于視圖行進路徑的旋轉的回圈 |
| progress | 在此視圖上呼叫方法setProgress(float)(用于與嵌套的ConstraintLayouts等對話) |
| <CustomAttribute> | 通過反射呼叫設定的“名稱”方法(僅限于浮點數) |
ConstraintSet
| 屬性 | 描述 |
|---|---|
| android:id | ConstraintSet的ID |
| <Constraint> | ConstraintLayout約束+與視圖關聯的其他屬性 |
<Constraint>
| 屬性 | 描述 |
|---|---|
| android:id | 視圖編號 |
| [ConstraintLayout attributes] | 允許使用屬于ContraintLayout布局的任何屬性 |
| transitionEasing | 定義從該點影片時要使用的緩動曲線(例如curve(1.0,0,0,1.0))或關鍵字{standard |
| pathMotionArc | 路徑將以弧形(月蝕)或關鍵字{startVertical | startHorizo??ntal | 沒有 } |
| transitionPathRotate | (浮動)相對于所走路徑旋轉物件 |
| drawPath | 畫出布局將設定影片的路徑 |
| progress | 在此視圖上呼叫方法setProgress(float)(用于與嵌套的ConstraintLayouts等對話) |
| <Layout> | ConstraintLayout的屬性,例如layout_constraintTop_toTopOf |
| <PropertySet> | 當前僅可見性,alpha,motionProgress,layout_constraintTag |
| <Transform> | 所有視圖轉換API,例如android:rotation |
| <Motion> | 運動布局控制命令,例如transitionEasing和pathMotionArc |
| <CustomAttribute> | 通過反射呼叫設定的“名稱”方法 |
<Layout>
允許使用屬于ContraintLayout布局的任何屬性
<PropertySet>
| 屬性 | 描述 |
|---|---|
| visibility | 設定視圖的可見性,可見,不可見或消失的一種 |
| alpha | setAlpha值 |
| motionProgress | 使用反射呼叫setProgress |
| layout_constraintTag | 標記字串以標識物件的型別 |
<Transform>
| 屬性 | 描述 |
|---|---|
| android:elevation | 視圖的基本z深度 |
| android:rotation | 視圖的旋轉度(以度為單位) |
| android:rotationX | 視圖圍繞x軸的旋轉(以度為單位) |
| android:rotationY | 圍繞y軸的視圖旋轉(以度為單位) |
| android:scaleX | 視圖在x方向上的比例 |
| android:scaleY | y方向上的視圖比例 |
| android:translationX | 視圖x的翻譯,此值在布局后添加到視圖的left屬性,該屬性由其布局設定 |
| android:translationY | 在視圖y中進行翻譯,此值在布局后添加到視圖的top屬性中,該屬性由其布局設定 |
| android:translationZ | 視圖z的翻譯,此值將添加到其高程中 |
<Motion>
| 屬性 | 描述 |
|---|---|
| transitionEasing | 定義加速度曲線 |
| pathMotionArc | 說除非垂直或水平運動,否則物件應按四分之一橢圓運動 |
| motionPathRotate | 將旋轉設定為物件的路徑+此角度 |
| drawPath | 除錯實用程式繪制路徑的運動 |
<CustomAttribute>
| 屬性 | 描述 |
|---|---|
| attributeName | 屬性的名稱,區分大小寫,(MyAttr將尋找方法setMyAttr(…) |
| customColorValue | 該值為看起來像setMyAttr(int)的顏色 |
| customIntegerValue | 該值是一個看起來像setMyAttr(int)的整數 |
| customFloatValue | 該值是一個看起來像setMyAttr(float)的float |
| customStringValue | 該值是一個看起來像setMyAttr(String)的字串 |
| customDimension | 該值是一個看起來像setMyAttr(float)的尺寸 |
| customBoolean | 看起來是true還是false的setMyAttr(boolean) |
StateSet
| 屬性 | 描述 |
|---|---|
| defaultState | 要使用的約束集或布局 |
| <State> | 物體的側面 |
<State>
| 屬性 | 描述 |
|---|---|
| android:id | 當前State的編號 |
| constraints | ConstraintSet或Layout檔案的ID |
| <Variant> | 不同的約束設定/布局以選擇with或height匹配 |
<Variant>
| 屬性 | 描述 |
|---|---|
| region_widthLessThan | 如果寬度小于則匹配 |
| region_widthMoreThan | 如果寬度大于則匹配 |
| region_heightLessThan | 如果高度小于則匹配 |
| region_heightMoreThan | 如果高度超過則匹配 |
| constraints | ConstraintSet或布局的ID |
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/241365.html
標籤:其他
