温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

xml布局自定义SurfaceView模板

发布时间:2020-07-02 03:46:06 来源:网络 阅读:588 作者:wufanxin 栏目:移动开发
  1. package com.dream.apm;


  2. import android.content.Context;

  3. import android.graphics.Canvas;

  4. import android.graphics.Color;

  5. import android.graphics.Paint;

  6. import android.graphics.RectF;

  7. import android.util.AttributeSet;

  8. import android.util.Log;

  9. import android.view.MotionEvent;

  10. import android.view.SurfaceHolder;

  11. import android.view.SurfaceView;


  12. import java.io.UnsupportedEncodingException;

  13. import java.util.ArrayList;

  14. import java.util.List;

  15. import java.util.Random;


  16. /**

  17. * Created by HuangZhiLong on 2015/1/22.

  18. */

  19. public class MySurfaceViewone extends SurfaceView implements SurfaceHolder.Callback,Runnable {


  20.     private Thread th;

  21.     private SurfaceHolder sfh;

  22.     private Canvas canvas;

  23.     private Paint paint;

  24.     private boolean flag;


  25.     public int screenW=0,screenH=0;



  26.     /**

  27.      * SurfaceView初始化函数

  28.      */

  29.     public MySurfaceViewone(Context context, AttributeSet attrs) {

  30.         super(context, attrs);


  31.         this.setKeepScreenOn(true);

  32.         sfh = this.getHolder();

  33.         sfh.addCallback(this);

  34.         paint = new Paint();

  35.         paint.setAntiAlias(true);//消除锯齿

  36.         //paint.setTypeface(Typeface.DEFAULT_BOLD);

  37.         this.setFocusable(true);

  38.         this.setFocusableInTouchMode(true);



  39.     }


  40.     /**

  41.      * SurfaceView视图创建,响应此函数

  42.      */

  43.     @Override

  44.     public void surfaceCreated(SurfaceHolder holder) {


  45.         screenW = this.getWidth();

  46.         screenH = this.getHeight();


  47.         myDraw();


  48.         //tt=new Rect(0,0,this.getWidth(),this.getHeight());

  49.         flag = true;

  50.         th = new Thread(this);

  51.         th.start();


  52.     }

  53.     /**

  54.      * 游戏绘图

  55.      */

  56.     public void myDraw() {

  57.         try {



  58.             canvas = sfh.lockCanvas();

  59.             canvas.drawColor(Color.rgb(90, 151, 161));//背景


  60.             paint.setStrokeWidth(0);

  61.             paint.setColor(Color.BLACK);

  62.             //paint.setTextSize(size);

  63.             //绘制表格



  64.         } catch (Exception e) {


  65.         } finally {

  66.             if (canvas != null)

  67.                 sfh.unlockCanvasAndPost(canvas);

  68.         }

  69.     }


  70.     /**

  71.      * 图片的线程运行

  72.      */

  73.     public void run() {

  74.         while (flag) {

  75.             myDraw();


  76.             try {

  77.                 Thread.sleep(40);

  78.             } catch (Exception ex) {

  79.                 Log.e("ERROR", "Thread is Error!");

  80.             }

  81.         }

  82.     }


  83.     /**

  84.      * 触屏事件监听

  85.      */

  86.     @Override

  87.     public boolean onTouchEvent(MotionEvent event) {



  88.         switch (event.getAction())

  89.         {

  90.             //移动

  91.             case MotionEvent.ACTION_MOVE:



  92.                 break;

  93.             //按下

  94.             case MotionEvent.ACTION_DOWN:


  95.                 break;

  96.             //放开

  97.             case MotionEvent.ACTION_UP:


  98.                 break;


  99.         }

  100.         return true;

  101.     }




  102.     /**

  103.      * SurfaceView视图状态发生改变,响应此函数

  104.      */

  105.     @Override

  106.     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

  107.         System.out.println("ImageSurfaceView is surfaceChanged");


  108.     }

  109.     /**

  110.      * SurfaceView视图消亡时,响应此函数

  111.      */

  112.     @Override

  113.     public void surfaceDestroyed(SurfaceHolder holder) {

  114.         System.out.println("ImageSurfaceView is surfaceDestroyed");

  115.         flag = false;//停止线程

  116.     }



  117. }

复制代码

android中使用xml布局自定义SurfaceView模板


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI