Android動畫基礎【1】——(逐幀動畫)
阿新 • • 發佈:2018-12-31
動畫的意義:
1. 增強視覺效果
2. 更好的引導使用者
整個課程目標:
1. 瞭解定義逐幀動畫的方法
2. 瞭解定義視覺動畫的方法
3. 瞭解定義屬性動畫的方法
整個課程的學習內容:
1. 逐幀動畫
2. 視覺動畫系統
3. 屬性動畫系統
這裡首先記錄學習逐幀動畫相關知識
逐幀動畫也叫作圖片動畫。通過在一個固定區域然後一張一張的載入圖片而產生的動畫效果(每一張圖片就是一幀),所以稱為逐幀動畫。
我們在Android程式中使用逐幀動畫主要涉及兩個點: 1. AnimationDrawable類 2. <animation-list>
使用步驟:
1. 先準備幾張我們要做逐幀動畫效果顯示的圖片,然後存放在/res/drawable目錄下。
2. 在/res/drawable目錄新建一個xml檔案,根目錄設為<animation-list>。
3. 將上面的xml設為view檢視的背景
4. 然後在程式碼中獲取AnimationDrawable物件後進行相關操作。
下面請看示例:
frame_1、frame_2、frame_3為我們準備的幀圖片。
drawable目錄下的xml檔案: loading.xml
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/frame_1" android:duration="100"/> <item android:drawable="@drawable/frame_2" android:duration="100" /> <item android:drawable="@drawable/frame_3" android:duration="100"/> </animation-list>
佈局檔案:activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_frame_animation" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:id="@+id/view" android:background="@drawable/loading" android:layout_width="300dp" android:layout_height="300dp" android:layout_gravity="center"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" style="?android:attr/buttonBarStyle"> <Button android:id="@+id/btnStart" style="?android:attr/buttonBarButtonStyle" android:text="@string/start" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <Button android:id="@+id/btnStop" style="?android:attr/buttonBarButtonStyle" android:text="@string/stop" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
主活動MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View view = findViewById(R.id.view);
final AnimationDrawable animationDrawable = (AnimationDrawable) view.getBackground();
Button startButton = findViewById(R.id.btnStart);
Button stopButton = findViewById(R.id.btnStop);
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
animationDrawable.start();
}
});
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
animationDrawable.stop();
}
});
}
}