Android 系列 5.13添加简单光栅动画
生活随笔
收集整理的這篇文章主要介紹了
Android 系列 5.13添加简单光栅动画
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
5.13添加簡單光柵動畫
問題
您需要向屏幕添加動畫圖像。
解
Android對用戶界面動畫有很好的支持;使用AnimationDrawable類很容易對圖像進行排序。
討論
要創建動畫,首先使用圖形程序生成要排序的圖像。每個圖像表示動畫的一幀;圖像通常將是相同的大小,每個幀之間的變化根據需要。
這個動畫的技巧將順序一些交通燈圖像。圖像可以使用開源矢量圖形程序Inkscape(參見http://inkscape.org)生成。所使用圖像的副本可從打開剪貼圖庫(http://www.openclipart.org/)獲得;搜索“交通燈關閉”,選擇圖像,單擊查看SVG按鈕,并從瀏覽器保存該文件。然后在Inkscape中打開該文件。
動畫將包括四個圖像,顯示在英國使用的交通燈的順序:紅色,紅色和黃色,綠色,黃色和回到紅色。 SVG圖像具有所有可用的光 - 它們只是隱藏在半透明的圓圈后面。要生成第一個圖像,請選擇覆蓋紅燈的圓圈并將其刪除。
然后從編輯菜單中使用全選以突出顯示整個圖像。使用文件菜單,選擇導出位圖。在“導出位圖”對話框中的“位圖大小”下,在“高度”框中輸入150,然后為要生成的文件選擇目錄和文件名,例如red.png。單擊導出按鈕導出位圖。刪除覆蓋黃燈的圓圈,再次單擊全選,然后像以前一樣導出到文件;例如,red_yellow.png。使用編輯菜單并選擇撤消(兩次)以覆蓋紅色光和黃色光,然后刪除覆蓋綠色光的圓。導出到green.png。再次使用undo覆蓋綠燈并刪除覆蓋黃燈的圓。將位圖導出到yellow.png(見圖5-22)。
圖5-22。導出位圖對話框
四個文件現在準備好動畫。
這將按動畫的順序列出要動畫化的圖像,并顯示每個需要顯示的時間(以毫秒為單位)。如果動畫在運行圖像后需要停止,則屬性android:oneshot設置為true。
在Activity類中,聲明了一個AnimationDrawable(執行動畫的Android類)。在onCreate它被分配給ImageView使用的Drawable。最后,通過調用AnimationDrawable start()方法啟動動畫(如果需要,有一個stop()方法可用于結束動畫)。在onWindowFocusChanged中調用start方法,以確保在動畫開始之前所有內容都已加載(可以很容易地使用按鈕或其他類型的輸入啟動)。例5-21顯示了主活動的代碼。
實施例5-21。主要活動
public class main extends Activity { AnimationDrawable lightsAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView lights = (ImageView) findViewById(R.id.imageView1); lightsAnimation=(AnimationDrawable) lights.getDrawable(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); lightsAnimation.start(); } }
圖像動畫可以是有用的,以增加屏幕的興趣,可以用于游戲或卡通。
問題
您需要向屏幕添加動畫圖像。
解
Android對用戶界面動畫有很好的支持;使用AnimationDrawable類很容易對圖像進行排序。
討論
要創建動畫,首先使用圖形程序生成要排序的圖像。每個圖像表示動畫的一幀;圖像通常將是相同的大小,每個幀之間的變化根據需要。
這個動畫的技巧將順序一些交通燈圖像。圖像可以使用開源矢量圖形程序Inkscape(參見http://inkscape.org)生成。所使用圖像的副本可從打開剪貼圖庫(http://www.openclipart.org/)獲得;搜索“交通燈關閉”,選擇圖像,單擊查看SVG按鈕,并從瀏覽器保存該文件。然后在Inkscape中打開該文件。
動畫將包括四個圖像,顯示在英國使用的交通燈的順序:紅色,紅色和黃色,綠色,黃色和回到紅色。 SVG圖像具有所有可用的光 - 它們只是隱藏在半透明的圓圈后面。要生成第一個圖像,請選擇覆蓋紅燈的圓圈并將其刪除。
然后從編輯菜單中使用全選以突出顯示整個圖像。使用文件菜單,選擇導出位圖。在“導出位圖”對話框中的“位圖大小”下,在“高度”框中輸入150,然后為要生成的文件選擇目錄和文件名,例如red.png。單擊導出按鈕導出位圖。刪除覆蓋黃燈的圓圈,再次單擊全選,然后像以前一樣導出到文件;例如,red_yellow.png。使用編輯菜單并選擇撤消(兩次)以覆蓋紅色光和黃色光,然后刪除覆蓋綠色光的圓。導出到green.png。再次使用undo覆蓋綠燈并刪除覆蓋黃燈的圓。將位圖導出到yellow.png(見圖5-22)。
圖5-22。導出位圖對話框
四個文件現在準備好動畫。
啟動Android項目。將四個生成的文件復制到res / drawable目錄中。動畫列表需要在同一目錄中定義。在res / drawable中創建一個名為uktrafficlights.xml的新文件。在這個新文件中添加以下內容:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/red" android:duration="2000" /> <item android:drawable="@drawable/red_yellow" android:duration="2000" /> <item android:drawable="@drawable/green" android:duration="2000" /> <item android:drawable="@drawable/yellow" android:duration="2000" /> </animation-list>這將按動畫的順序列出要動畫化的圖像,并顯示每個需要顯示的時間(以毫秒為單位)。如果動畫在運行圖像后需要停止,則屬性android:oneshot設置為true。
在程序的布局文件中,添加了一個ImageView,其源代碼為@ drawable / uktrafficlights(即指向創建的文件):
在Activity類中,聲明了一個AnimationDrawable(執行動畫的Android類)。在onCreate它被分配給ImageView使用的Drawable。最后,通過調用AnimationDrawable start()方法啟動動畫(如果需要,有一個stop()方法可用于結束動畫)。在onWindowFocusChanged中調用start方法,以確保在動畫開始之前所有內容都已加載(可以很容易地使用按鈕或其他類型的輸入啟動)。例5-21顯示了主活動的代碼。
實施例5-21。主要活動
public class main extends Activity { AnimationDrawable lightsAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView lights = (ImageView) findViewById(R.id.imageView1); lightsAnimation=(AnimationDrawable) lights.getDrawable(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); lightsAnimation.start(); } }
圖像動畫可以是有用的,以增加屏幕的興趣,可以用于游戲或卡通。
總結
以上是生活随笔為你收集整理的Android 系列 5.13添加简单光栅动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++操作题-定义并实现一个银行类(Ba
- 下一篇: android sina oauth2.