Android 系列 5.13添加简单光栅动画
生活随笔
收集整理的這篇文章主要介紹了
Android 系列 5.13添加简单光栅动画
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
5.13添加簡單光柵動(dòng)畫
問題
您需要向屏幕添加動(dòng)畫圖像。
解
Android對(duì)用戶界面動(dòng)畫有很好的支持;使用AnimationDrawable類很容易對(duì)圖像進(jìn)行排序。
討論
要?jiǎng)?chuàng)建動(dòng)畫,首先使用圖形程序生成要排序的圖像。每個(gè)圖像表示動(dòng)畫的一幀;圖像通常將是相同的大小,每個(gè)幀之間的變化根據(jù)需要。
這個(gè)動(dòng)畫的技巧將順序一些交通燈圖像。圖像可以使用開源矢量圖形程序Inkscape(參見http://inkscape.org)生成。所使用圖像的副本可從打開剪貼圖庫(http://www.openclipart.org/)獲得;搜索“交通燈關(guān)閉”,選擇圖像,單擊查看SVG按鈕,并從瀏覽器保存該文件。然后在Inkscape中打開該文件。
動(dòng)畫將包括四個(gè)圖像,顯示在英國使用的交通燈的順序:紅色,紅色和黃色,綠色,黃色和回到紅色。 SVG圖像具有所有可用的光 - 它們只是隱藏在半透明的圓圈后面。要生成第一個(gè)圖像,請(qǐng)選擇覆蓋紅燈的圓圈并將其刪除。
然后從編輯菜單中使用全選以突出顯示整個(gè)圖像。使用文件菜單,選擇導(dǎo)出位圖。在“導(dǎo)出位圖”對(duì)話框中的“位圖大小”下,在“高度”框中輸入150,然后為要生成的文件選擇目錄和文件名,例如red.png。單擊導(dǎo)出按鈕導(dǎo)出位圖。刪除覆蓋黃燈的圓圈,再次單擊全選,然后像以前一樣導(dǎo)出到文件;例如,red_yellow.png。使用編輯菜單并選擇撤消(兩次)以覆蓋紅色光和黃色光,然后刪除覆蓋綠色光的圓。導(dǎo)出到green.png。再次使用undo覆蓋綠燈并刪除覆蓋黃燈的圓。將位圖導(dǎo)出到y(tǒng)ellow.png(見圖5-22)。
圖5-22。導(dǎo)出位圖對(duì)話框
四個(gè)文件現(xiàn)在準(zhǔn)備好動(dòng)畫。
這將按動(dòng)畫的順序列出要?jiǎng)赢嫽膱D像,并顯示每個(gè)需要顯示的時(shí)間(以毫秒為單位)。如果動(dòng)畫在運(yùn)行圖像后需要停止,則屬性android:oneshot設(shè)置為true。
在Activity類中,聲明了一個(gè)AnimationDrawable(執(zhí)行動(dòng)畫的Android類)。在onCreate它被分配給ImageView使用的Drawable。最后,通過調(diào)用AnimationDrawable start()方法啟動(dòng)動(dòng)畫(如果需要,有一個(gè)stop()方法可用于結(jié)束動(dòng)畫)。在onWindowFocusChanged中調(diào)用start方法,以確保在動(dòng)畫開始之前所有內(nèi)容都已加載(可以很容易地使用按鈕或其他類型的輸入啟動(dòng))。例5-21顯示了主活動(dòng)的代碼。
實(shí)施例5-21。主要活動(dòng)
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(); } }
圖像動(dòng)畫可以是有用的,以增加屏幕的興趣,可以用于游戲或卡通。
問題
您需要向屏幕添加動(dòng)畫圖像。
解
Android對(duì)用戶界面動(dòng)畫有很好的支持;使用AnimationDrawable類很容易對(duì)圖像進(jìn)行排序。
討論
要?jiǎng)?chuàng)建動(dòng)畫,首先使用圖形程序生成要排序的圖像。每個(gè)圖像表示動(dòng)畫的一幀;圖像通常將是相同的大小,每個(gè)幀之間的變化根據(jù)需要。
這個(gè)動(dòng)畫的技巧將順序一些交通燈圖像。圖像可以使用開源矢量圖形程序Inkscape(參見http://inkscape.org)生成。所使用圖像的副本可從打開剪貼圖庫(http://www.openclipart.org/)獲得;搜索“交通燈關(guān)閉”,選擇圖像,單擊查看SVG按鈕,并從瀏覽器保存該文件。然后在Inkscape中打開該文件。
動(dòng)畫將包括四個(gè)圖像,顯示在英國使用的交通燈的順序:紅色,紅色和黃色,綠色,黃色和回到紅色。 SVG圖像具有所有可用的光 - 它們只是隱藏在半透明的圓圈后面。要生成第一個(gè)圖像,請(qǐng)選擇覆蓋紅燈的圓圈并將其刪除。
然后從編輯菜單中使用全選以突出顯示整個(gè)圖像。使用文件菜單,選擇導(dǎo)出位圖。在“導(dǎo)出位圖”對(duì)話框中的“位圖大小”下,在“高度”框中輸入150,然后為要生成的文件選擇目錄和文件名,例如red.png。單擊導(dǎo)出按鈕導(dǎo)出位圖。刪除覆蓋黃燈的圓圈,再次單擊全選,然后像以前一樣導(dǎo)出到文件;例如,red_yellow.png。使用編輯菜單并選擇撤消(兩次)以覆蓋紅色光和黃色光,然后刪除覆蓋綠色光的圓。導(dǎo)出到green.png。再次使用undo覆蓋綠燈并刪除覆蓋黃燈的圓。將位圖導(dǎo)出到y(tǒng)ellow.png(見圖5-22)。
圖5-22。導(dǎo)出位圖對(duì)話框
四個(gè)文件現(xiàn)在準(zhǔn)備好動(dòng)畫。
啟動(dòng)Android項(xiàng)目。將四個(gè)生成的文件復(fù)制到res / drawable目錄中。動(dòng)畫列表需要在同一目錄中定義。在res / drawable中創(chuàng)建一個(gè)名為uktrafficlights.xml的新文件。在這個(gè)新文件中添加以下內(nèi)容:
<?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>這將按動(dòng)畫的順序列出要?jiǎng)赢嫽膱D像,并顯示每個(gè)需要顯示的時(shí)間(以毫秒為單位)。如果動(dòng)畫在運(yùn)行圖像后需要停止,則屬性android:oneshot設(shè)置為true。
在程序的布局文件中,添加了一個(gè)ImageView,其源代碼為@ drawable / uktrafficlights(即指向創(chuàng)建的文件):
在Activity類中,聲明了一個(gè)AnimationDrawable(執(zhí)行動(dòng)畫的Android類)。在onCreate它被分配給ImageView使用的Drawable。最后,通過調(diào)用AnimationDrawable start()方法啟動(dòng)動(dòng)畫(如果需要,有一個(gè)stop()方法可用于結(jié)束動(dòng)畫)。在onWindowFocusChanged中調(diào)用start方法,以確保在動(dòng)畫開始之前所有內(nèi)容都已加載(可以很容易地使用按鈕或其他類型的輸入啟動(dòng))。例5-21顯示了主活動(dòng)的代碼。
實(shí)施例5-21。主要活動(dòng)
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(); } }
圖像動(dòng)畫可以是有用的,以增加屏幕的興趣,可以用于游戲或卡通。
總結(jié)
以上是生活随笔為你收集整理的Android 系列 5.13添加简单光栅动画的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++操作题-定义并实现一个银行类(Ba
- 下一篇: 汉高2020财年第三季度实现强劲的有机销