您的位置:首页 > 其它

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

2016-01-30 22:19 393 查看
游戏首页图片代码:(红色标记为sufaceview的一般使用模版)[/b]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) {//销毁时被调用    }}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: