安卓作业 游戏动画

安卓的游戏动画小星星眨眼睛

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

这是一个比较有趣的安卓实列可以是图片中的东西动起来


提示:以下是本篇文章正文内容,下面案例可供参考

一、设置布局

示例:在activity_main.xml中编写布局方式

在这里插入图片描述

二、在drwable中添加图片

在这里插入图片描述

1.再在Java下添加一个Customview并在其中写入方法

在这里插入图片描述

代码如下(示例):

package net.wzy.TwinklingStart;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.view.View;

/**
 * 功能:自定义视图
 * 作者:华卫
 * 日期:2020年12月18日
 */
public class CustomView extends View {

    private Paint paint; // 画笔
    private int screenWidth; // 屏幕宽度
    private int screenHeight; // 屏幕高度
    private int count; // 刷屏次数

    /**
     * 构造方法
     *
     * @param context
     */
    public CustomView(Context context) {
        super(context);
        // 实例化画笔
        paint = new Paint();
        // 获取屏幕宽度
        screenWidth = ((Activity) context).getWindowManager().getDefaultDisplay().getWidth();
        // 获取屏幕高度
        screenHeight = ((Activity) context).getWindowManager().getDefaultDisplay().getHeight();
    }

    /**
     * 绘制方法
     *
     * @param canvas
     */
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        /* 将画布底色设置为黑色 —— 夜空 */
        paint.setColor(Color.BLACK);
        canvas.drawRect(0,0, screenWidth, screenHeight, paint);

        // 确保count只能取0、1、2
        count = ++count % 3;

        // 根据刷屏次数来设置画笔颜色
        switch (count) {
            case 0:
                paint.setColor(Color.GREEN); // 设置为绿色画笔
                break;
            case 1:
                paint.setColor(Color.WHITE); // 设置为白色画笔
                break;
            case 2:
                paint.setColor(Color.YELLOW); // 设置为黄色画笔
                break;
        }

        // 绘制月亮位图
        Drawable drawable = getResources().getDrawable(R.drawable.moon);
        drawable.setBounds(220, 90, 380, 250);
        drawable.draw(canvas);

        // 绘制星星
        paint.setTextSize(20);
        for (int i = 0; i < 100; i++) {
            canvas.drawText("★", (int)(Math.random() * screenWidth),
                    (int) (Math.random() * screenHeight), paint);
        }
    }
}

2.在写入方法

在这里插入图片描述

代码如下(示例):

package net.wzy.TwinklingStart;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

    private CustomView mCustomView; // 自定义视图
    private Timer timer; // 定时器
    private TimerTask task; // 定时器任务

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 实例化自定义视图
        mCustomView = new CustomView(this);
        // 将自定义视图设置为用户界面
        setContentView(mCustomView);

        // 创建定时器
        timer = new Timer();
        // 创建定时器任务
        task = new TimerTask() {
            @Override
            public void run() {
                // 刷新自定义视图
                mCustomView.postInvalidate();
            }
        };
        // 对定时器任务进行调度
        timer.schedule(task, 0, 100);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 取消定时器任务
        timer.cancel();
    }
}

3在manifests中写入

在这里插入图片描述


四 效果

在这里插入图片描述
当然当你做出来以后这个星星是会动的并不是截图这样不动的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值