Eclipse Android 手机开发作业---空中的气球

一、添加跳舞的背景图片

在之前创建的Android项目中的Activity中添加以下代码来实现添加背景图片。

代码:android:background="@drawable/background"

 

图(1)添加背景图片

二、实现空中的气球

选中你需要的气球图片,将其存放在工程目录res/drawable文件夹,需要新建一个文件夹存放图片。

 

图(2)新建一个drawable文件夹

实现小人跳舞所示代码:

package com.example.ballon;

import java.util.Random;

import android.app.Activity;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private boolean flag = true;//标记变量
    private boolean flag_x = true;//为true表示从左向右
    private ImageView img_ball;//声明一个ImageView对象
    private Handler handler;//声明一个Handler对象
    private int x = 10;
    private int y = 100;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        img_ball = (ImageView)findViewById(R.id.img_ball);//获取ImageView对象
        Display display = getWindowManager().getDefaultDisplay();
        //获取一个屏幕的实例
        Point point = new Point();
        //实例一个点
        display.getRealSize(point);
        //获取当前屏幕的大小
        final int mScreenW = point.x;
        //获得屏幕的的宽度
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                int move_x = 0;
                if(msg.what == 0x101) {
                    move_x = msg.arg1;//获取移动的距离
                    if(x > (mScreenW - img_ball.getWidth())) {
                        flag_x = false;
                    }
                    else if(x < img_ball.getWidth()) {
                        flag_x = true;
                    }
                    if(flag_x) {
                        x += move_x;
                    }
                    else {
                        x -= move_x;
                    }
                    
                    if(flag) {
                        y -= 10;
                        flag = false;
                    }else {
                        y += 10;
                        flag = true;
                    }
                    img_ball.setX(x);//设置x轴距离
                    img_ball.setX(y);//设置y轴距离
                }
                super.handleMessage(msg);
            }
        };
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                int index = 0;//移动的距离
                while(!Thread.currentThread().isInterrupted()) {
                    index = new Random().nextInt(20);//产生一个随机数
                    
                    Message m = handler.obtainMessage();//获取一个Message
                    m.what = 0x101;//设置消息标示
                    m.arg1 = index;//设置移动距离
                    handler.sendMessage(m);//发送消息
                    
                    try {
                        //休眠一段时间
                        Thread.sleep(new Random().nextInt(500) + 500);
                    }catch(InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                
            }
        });
        t.start();
    }
}

三、实验中的错误

运行时报如下错:

 

图(3)出错实例

解决方案:将本项目从Eclipse中删除,在重启即可。

四、实验效果

 

posted @ 2020-04-20 16:56  辣條先生  阅读(443)  评论(0编辑  收藏  举报