動畫的意義:
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();
}
});
}
}
運作效果:
