aide安卓编程14-彩色雪花屏:定时器,随机数,贴图片

以下例子实现:

1)用Random产生3个0到255的随机整数凑成一个随机颜色
2)用定时器每隔一段时间重画一次界面
3)创建Bitmap(位图)类型图片bm,每次绘制界面时先把bm每个像素点设置成随机颜色(比canvas.DrawPoint效率高的多),最后把整个图片贴到(充满)窗口。

最终效果就是不断变换颜色的彩色雪花屏。

从本次开始,我们把自定义的类都写到MainActivity内,这样可以共用MainActivity的全局变量。

package com.baobao.sayhello;

import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.util.*;


public class MainActivity extends Activity 
{
    
    mview view;
    int winx,winy,bmx,bmy;
    Bitmap bm;
    class mview extends View{//自定义一个叫mview的新类型,继承View
        public mview(Context con){//构造(初始化)函数
            super(con);
        }

        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh)
        {
            //窗口大小改变时触发
            super.onSizeChanged(w, h, oldw, oldh);
            winx=w;winy=h;bmx=winx/8;bmy=winy/8;
            bm=Bitmap.createBitmap(bmx,bmy,Bitmap.Config.RGB_565);//建立指定宽高的图片bm
            new Timer().schedule(new TimerTask(){//建立定时器
                @Override
                public void run(){//每次要做的内容
                    view.invalidate();//重绘窗口
                }
            },0,10);//0毫秒后开始,每隔10毫秒运行一次
        }

        @Override
        protected void onDraw(Canvas canvas)
        {
            Paint p=new Paint();
            int ix,iy;
            Random r=new Random();//创建随机数生成器
            for(ix=0;ix
aide安卓编程14-彩色雪花屏:定时器,随机数,贴图片_第1张图片
效果

你可能感兴趣的:(aide安卓编程14-彩色雪花屏:定时器,随机数,贴图片)