安卓surfaceview使用之游戏首页开发

游戏首页图片代码:(红色标记为sufaceview的一般使用模版)
public class WelcomeView extends SurfaceView implements SurfaceHolder.Callback   //实现生命周期回调接口
{
    static Bitmap b;

   SurfaceHolder myholder ;

    Paint paint;            //画笔
    int currentAlpha = 0;    //当前的不透明值
    int sleepTime = 100;       //动画的时延ms

    float screenWidth, screenHeight;

    float currentX;         //图片位置
    float currentY;

    public WelcomeView(Context context) {
        super(context);
        b = BitmapFactory.decodeResource(this.getResources(), R.drawable.welcome);//加载图片
        this.getHolder().addCallback(this);  //设置生命周期回调接口的实现者
        paint = new Paint();  //创建画笔
        paint.setAntiAlias(true);  //打开抗锯齿

        WindowManager wm = (WindowManager) getContext()//获取屏幕宽度
                .getSystemService(Context.WINDOW_SERVICE);

        screenWidth = wm.getDefaultDisplay().getWidth();
        screenHeight = wm.getDefaultDisplay().getHeight();

        currentX = screenWidth / 2 - b.getWidth() / 2;//图片的起始坐标
        currentY = screenHeight / 2 - b.getHeight() / 2;
        myholder = this.getHolder();       //要初始化下
    }


    public void myDraw(Canvas canvas) {

        canvas.save();

        //绘制黑填充矩形清背景
        paint.setColor(Color.BLACK);//设置画笔颜色
        paint.setAlpha(255);
        canvas.drawRect(0, 0, screenWidth, screenHeight, paint);
        //进行平面贴图
        paint.setAlpha(currentAlpha);    //设置当前不透明度
        canvas.drawBitmap(b, currentX, currentY, paint);
        canvas.restore();

    }

    public void surfaceCreated(SurfaceHolder holder) //创建时被调用
    {
        mythread mythread1=new mythread();
        mythread1.start();
    }

    class mythread extends Thread {
        public void run() {
            for (int i = 255; i > -10; i = i - 10) {//动态更改图片的透明度值并不断重绘
                currentAlpha = i;
                if (currentAlpha < 0) {
                    currentAlpha = 0;
                 }      
                Canvas canvas = myholder.lockCanvas();//获取画布
                try {
                    synchronized (myholder) {
                        myDraw(canvas);//绘制
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (canvas != null) {
                        myholder.unlockCanvasAndPost(canvas);
                    }
                }

                try {
                    Thread.sleep(sleepTime);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            //此时发送消息到主activity,调用下一个界面
            //activity.handler.sendEmptyMessage(Constant.COMMAND_GOTO_MENU_VIEW);
        }
    }

    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {//画布改变时调用
    }

    public void surfaceDestroyed(SurfaceHolder arg0) {//销毁时被调用
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值