剛剛看了一下一個幀布局的簡單Android樣本,糾結了半天不知道如何將圖片加到resource中的drawable中去。
比如在一個TestDemo的Res/drawable檔案夾中,新添加一張圖片資源要如何添加。
我直接將圖片複製到bin\res\drawable-hdpi或者bin\res\drawable-mdpi中去,然後在eclipse中重新整理圖片仍然不顯示。
上網找到了關於載入圖片資源的問題解決辦法:
直接拷貝需要添加的圖片資源,然後在Res/drawable檔案夾 右鍵點擊 選擇“粘貼”即可把圖片拷貝進去。
下面是一個簡單的幀布局Android應用執行個體,實現一隻小鳥飛翔的動畫效果,參考了《大話企業級Android應用開發實戰》15.2.5幀布局(FrameLayout) P110-113頁。代碼如下:
package com.ccf.birdframe;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.graphics.drawable.Drawable;import android.view.Menu;import android.view.View;import android.widget.FrameLayout;public class BirdActivity extends Activity {FrameLayout frame = null;private boolean flag = true;//由該類兩個方法間的迴圈調用,實現介面不斷更新class MyHandler extends Handler{int i = 0;public void handleMessage(Message msg) {i++;//總共7幅圖,依次顯示show(i % 7);//調用sleep函數sleep(50);}public void sleep(long delayMillis) {//判斷是否繼續飛翔if(flag) {//實質上是調用了一次handleMessagesendMessageDelayed(obtainMessage(0), delayMillis);}}}//該方法是被調用以更新幀布局的前景圖片void show(int j) {//擷取七張圖片Drawable mybird1 = getResources().getDrawable(R.drawable.mybird1);Drawable mybird2 = getResources().getDrawable(R.drawable.mybird2);Drawable mybird3 = getResources().getDrawable(R.drawable.mybird3);Drawable mybird4 = getResources().getDrawable(R.drawable.mybird4);Drawable mybird5 = getResources().getDrawable(R.drawable.mybird5);Drawable mybird6 = getResources().getDrawable(R.drawable.mybird6);Drawable mybird7 = getResources().getDrawable(R.drawable.mybird7);//不同的情況,設定不同的前景switch(j) { case 0: frame.setForeground(mybird1); break; case 1: frame.setForeground(mybird2); break; case 2: frame.setForeground(mybird3); break; case 3: frame.setForeground(mybird4); break; case 4: frame.setForeground(mybird5); break; case 5: frame.setForeground(mybird6); break; case 6: frame.setForeground(mybird7); break;}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_bird);frame = (FrameLayout)findViewById(R.id.frame);//建立一個Handler子類對象,要調用其方法final MyHandler myHandler = new MyHandler();myHandler.sleep(50);//為frame設定單擊事件,當其被擊中時,在飛翔於暫停之間切換frame.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubflag = !flag;myHandler.sleep(50);}});}}
七張圖片如下:
mybird1 mybird2 mybird3 mybird4
mybird5 mybird6 mybird7