android添加图片资源文件,在android中资源文件夹中添加一个新的图片资源

本文介绍了一个使用Android帧布局(FrameLayout)实现小鸟飞翔动画的示例。开发者遇到问题在于无法将图片资源添加到drawable文件夹并显示。解决方案是通过在Res/drawable目录下右键粘贴图片资源,并在代码中利用Handler和Drawable切换不同帧来实现动画效果。代码中展示了如何根据帧数更新FrameLayout的前景图片,以及如何通过点击事件切换动画状态。
摘要由CSDN通过智能技术生成

刚刚看了一下一个帧布局的简单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

0818b9ca8b590ca3270a3433284dd417.png 

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

mybird5                                                       mybird6                                    mybird7

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值