安卓的游戏动画小星星眨眼睛
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
这是一个比较有趣的安卓实列可以是图片中的东西动起来
提示:以下是本篇文章正文内容,下面案例可供参考
一、设置布局
示例:在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中写入
四 效果
当然当你做出来以后这个星星是会动的并不是截图这样不动的