刚刚看了一下一个帧布局的简单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) { //实质上是调用了一次handleMessage sendMessageDelayed(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; } } @Override protected 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() { @Override public void onClick(View v) { // TODO Auto-generated method stub flag = !flag; myHandler.sleep(50); } }); } }
七张图片如下:
mybird1 mybird2 mybird3 mybird4
mybird5 mybird6 mybird7