Home > Web Front-end > HTML Tutorial > Drawable Animation 帧动画_html/css_WEB-ITnose

Drawable Animation 帧动画_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:32:03
Original
940 people have browsed it

MySurfaceView类:

package com.fm;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.Log;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.SurfaceHolder.Callback;public class MySurfaceView extends SurfaceView implements Callback, Runnable {    private SurfaceHolder sfh;    private Paint paint;    private Thread th;    private boolean flag;    private Canvas canvas;    private int screenW, screenH;    //首先声明十个容量的位图数组    private Bitmap fishBmp[] = new Bitmap[10];    //记录当前播放帧    private int currentFrame;    //    /**     * SurfaceView初始化函数     */    public MySurfaceView(Context context) {        super(context);        sfh = this.getHolder();        sfh.addCallback(this);        paint = new Paint();        paint.setColor(Color.WHITE);        paint.setAntiAlias(true);        setFocusable(true);        //将每张小鱼帧图生成位图存入小鱼帧数组中        for (int i = 0; i < fishBmp.length; i++) {            fishBmp[i] = BitmapFactory.decodeResource(this.getResources(), R.drawable.fish0+ i);        }    }    /**     * SurfaceView视图创建,响应此函数     */    @Override    public void surfaceCreated(SurfaceHolder holder) {        screenW = this.getWidth();        screenH = this.getHeight();        flag = true;        //实例线程        th = new Thread(this);        //启动线程        th.start();    }    /**     * 游戏绘图     */    public void myDraw() {        try {            canvas = sfh.lockCanvas();            if (canvas != null) {                canvas.drawColor(Color.WHITE);                canvas.drawBitmap(fishBmp[currentFrame], 0, 0, paint);            }        } catch (Exception e) {            // TODO: handle exception        } finally {            if (canvas != null)                sfh.unlockCanvasAndPost(canvas);        }    }    /**     * 触屏事件监听     */    @Override    public boolean onTouchEvent(MotionEvent event) {        return true;    }    /**     * 按键事件监听     */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        return super.onKeyDown(keyCode, event);    }    /**     * 游戏逻辑     */    private void logic() {        currentFrame++;        if (currentFrame >= fishBmp.length) {            currentFrame = 0;        }    }    @Override    public void run() {        while (flag) {            long start = System.currentTimeMillis();            myDraw();            logic();            long end = System.currentTimeMillis();            try {                if (end - start < 50) {                    Thread.sleep(50 - (end - start));                }            } catch (InterruptedException e) {                e.printStackTrace();            }        }    }    /**     * SurfaceView视图状态发生改变,响应此函数     */    @Override    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {    }    /**     * SurfaceView视图消亡时,响应此函数     */    @Override    public void surfaceDestroyed(SurfaceHolder holder) {        flag = false;    }}
Copy after login

MainActivity类:

package com.fm;import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //设置全屏        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);        requestWindowFeature(Window.FEATURE_NO_TITLE);        //显示自定义的SurfaceView视图        setContentView(new MySurfaceView(this));    }}
Copy after login

 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template