日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:动画视图之应用场景

發布時間:2024/7/5 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:动画视图之应用场景 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:http://android.xsoftlab.net/training/transitions/transitions.html

在轉場框架中,動畫是由一幀幀的圖像連續繪制形成的,這一幀幀的圖像描述了啟動場景到結束場景的整個過程。轉場框架將這些動畫作為一個轉場對象,這個對象包含了動畫的相關信息。如果要運行動畫,需要提供一個轉場對象,及結束場景對象給轉場管理者。

這節課將會學習如何在場景轉換中使用平移、縮放及淡入淡出動畫。下節課將會學習如何定義自定義動畫。

創建轉場

在前面的課程中,我們學習了如何創建場景動畫的相關知識。在定義了啟動場景結束場景之后,還需要創建一個Transition對象。轉場框架允許使用內置的轉場對象或動態創建的轉場對象。

由資源文件創建轉場對象

這項技術的優點是,不用修改Java代碼就可以實現轉場定義的修改。這項技術還可以將復雜形式的轉場定義代碼分離成簡單的形式,更多的信息請參見Specify Multiple Transitions。

如果要使用內置的轉場資源,主要執行以下步驟:

  • 1.在工程中添加目錄res/transition/。

  • 2.在上面的目錄中創建一個新的XML資源文件。

  • 3.添加一個內置的轉場節點到該文件中。

下面的示例代碼使用了Fade轉場動畫:
res/transition/fade_transition.xml

<fade xmlns:android="http://schemas.android.com/apk/res/android" />

下面的代碼段展示了如何加載轉場資源:

Transition mFadeTransition =TransitionInflater.from(this).inflateTransition(R.transition.fade_transition);

動態創建轉場對象

這項技術可以在代碼中動態的創建轉場對象,使得可以在代碼中修改UI界面。創建簡單的內置轉場實例只需要少量的參數。

如果要創建內置的轉場實例,需要調用類Transition子類其中的一個構造方法即可。下面的示例創建了一個Fade轉場的實例:

Transition mFadeTransition = new Fade();

使用轉場動畫

通常需要使用轉場動畫來響應某些事件,比如用戶的輸入行為。考慮有這么一種情景,當用戶輸入了要搜索的關鍵詞,按下了搜索按鈕,接下來APP會變換場景,變換后的場景顯示了搜索之后的結果,并且原來場景的輸入框與搜索按鈕會被隱藏。

為了使動畫可以響應用戶的某些輸入,需要調用靜態方法 TransitionManager.go(),并需要傳入結束場景及轉場動畫:

TransitionManager.go(mEndingScene, mFadeTransition);

轉場動畫由轉場實例所指定的結束場景開始,這里的啟動場景是上一個轉場動畫的結束場景。如果沒有上一個轉場,那么啟動場景會根據當前的UI狀態自動決斷。

如果沒有指定轉場實例,那么轉場管理者會采用一種自動轉場的動畫。有關更多信息,請參見TransitionManager類。

選擇指定的目標View

默認情況下,轉場框架可以對所有的View執行轉場。不過在某些情況下,可能需要將轉場動畫作用在View的子集上。比如,轉場框架并不支持在ListView對象上使用動畫,所以不要試圖在ListView上使用動畫。不過轉場框架允許選擇指定的View來使用動畫。

每一個可以作用轉場動畫的View都被稱為target.不過只可以選擇其中一個與場景相關的部分.

如果要從target列表中要移除View,需要在啟動轉場之前調用removeTarget()方法。如果要往target列表中添加View,調用addTarget()方法即可。有關更多信息,請參見Transition類。

多重轉場

為了能使動畫引起更多的關注,應該使動畫的類型與所發生的事件相匹配。比如說,在移除某些View的時候,使用淡出效果會在潛意識中告訴用戶這個View不再可用。再比如,在屏幕上移動View,最好的方式就是使用動畫可以描述整個移動過程,以便讓用戶注意到View移動到了新的位置上。

你大可不必糾結選哪一種動畫才好,轉場框架提供了一種整合動畫的能力,它可以將內置動畫或者自定義動畫整合到一起一同執行。

如果要在XML中定義轉場集合,需要在res/transitions/目錄下創建一個資源文件,然后在文件中列出各個轉場動畫。下面的代碼段定義了與AutoTransition類相同特性的定義:

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"android:transitionOrdering="sequential"><fade android:fadingMode="fade_out" /><changeBounds /><fade android:fadingMode="fade_in" /> </transitionSet>

如要加載上述的轉場集合,需要調用TransitionInflater.from()方法。由于TransitionSet繼承了Transition,所以可以像普通的Transition對象一樣使用Transition對象集合。

在非場景中使用轉場動畫

更改View層級并不是修改UI界面的唯一方式。除此之外,還可以在單一層級中通過添加,修改,移除的方式更改用戶界面。比如說,可以通過單一的布局來實現搜索界面。這個布局剛開始只顯示了一個搜索的輸入框與一個搜索圖標。如果要顯示搜索結果,需要在用戶點擊搜索按鈕的時候通過調用ViewGroup.removeView()方法移除搜索按鈕,然后通過ViewGroup.addView()方法添加搜索結果。

你可能在與上述情況相似的情況下采用過類似的解決方式。比起采用兩個單獨的布局文件而言,采用動態修改單個布局文件的方式也可以完成相同的效果。

如果要實現上面的情景,那么則不需要創建場景。相反,你可以使用延遲轉場動畫實現這種情況。轉場框架的這個特性由當前View層級的狀態開始,記錄了該View層級的變化狀態,最終在系統重繪UI時將轉場應用到這個過程。

如果要使用單一的View層級創建延遲轉場,需要執行以下步驟:

1.如果要觸發轉場事件的發生,則需要調用TransitionManager.beginDelayedTransition()方法,該方法暴露了兩個參數:1.執行更改View的父View,2.要使用的轉場動畫。轉場框架會存儲更改View的當前狀態及屬性值。

2.要更改的View一定是跟使用情況相關的。轉場框架會記錄更改View的改變過程及屬性。

3.在系統重繪用戶界面的過程中,轉場框架會在這個過程中執行動畫。

下面的示例展示了如何使用延遲轉場動畫添加TextView。第一段定義了布局文件:
res/layout/activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/mainLayout"android:layout_width="match_parent"android:layout_height="match_parent" ><EditText android:id="@+id/inputText"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_width="match_parent"android:layout_height="wrap_content" />... </RelativeLayout>

第二段定義了動畫添加TextView的代碼:

private TextView mLabelText; private Fade mFade; private ViewGroup mRootView; ... // Load the layout this.setContentView(R.layout.activity_main); ... // Create a new TextView and set some View properties mLabelText = new TextView(); mLabelText.setText("Label").setId("1"); // Get the root view and create a transition mRootView = (ViewGroup) findViewById(R.id.mainLayout); mFade = new Fade(IN); // Start recording changes to the view hierarchy TransitionManager.beginDelayedTransition(mRootView, mFade); // Add the new TextView to the view hierarchy mRootView.addView(mLabelText); // When the system redraws the screen to show this update, // the framework will animate the addition as a fade in

定義轉場的生命周期回調

轉場的生命周期與Activity的生命周期非常類似。它代表了由TransitionManager.go()方法開始到動畫執行結束之間的完整的時間過程。在重要的生命過程中,轉場框架會調用TransitionListener接口所定義的回調。

這些回調是極有用的,比如說,在場景轉變的過程中復制View的屬性值。你不能簡單的將開始時View的值拷貝到結束時的View上,因為在轉場完成之前結束中的View層級還沒有完全被填充。相反的,你可以將值拷貝到一個變量中,然后在轉場框架結束的時候將值拷貝到View層級中。為了可以在轉場完成的時候獲得通知,可以在Activity中實現TransitionListener.onTransitionEnd()方法。

有關更多信息,請參見TransitionListener類的相關說明。

總結

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:动画视图之应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。