1.SurfaceView 背景透明

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//SurfaceView 透明背景MSurfaceView sv = (MSurfaceView) findViewById(R.id.sv);sv.setZOrderOnTop(true);//必须在布局初始化完成后设置sv.getHolder().setFormat(PixelFormat.TRANSPARENT);}
}

2.SurfaceView 清屏

    int i;@Overridepublic void run() {try {Canvas canvas = mHolder.lockCanvas();//SurfaceView 清屏canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);i++;Log.i(TAG, "C1=" + canvas.hashCode() + ",n=" + canvas.getClass().getName());canvas.drawText(""+i,getWidth() * 0.5f, getHeight() * 0.5f, paint);mHolder.unlockCanvasAndPost(canvas);postDelayed(this, 500);}catch (Exception e){Log.e(TAG,"run-ex="+e.getMessage());}}

3.SurfaceView 的 onDraw 方法 生效

@Overridepublic void surfaceCreated(@NonNull SurfaceHolder holder) {//SurfaceView 的 onDraw 方法生效setWillNotDraw(false);new Thread(this).start();}

简单代码实现

package cn.find;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;import androidx.annotation.NonNull;public class MSurfaceView extends SurfaceView implements Runnable, SurfaceHolder.Callback {private final String TAG = this.getClass().getName();private final SurfaceHolder mHolder;Paint paint = new Paint();public MSurfaceView(Context context) {this(context, null);Log.i(TAG, "111");}public MSurfaceView(Context context, AttributeSet attrs) {this(context, attrs, 0);Log.i(TAG, "222");}public MSurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);Log.i(TAG, "333");mHolder = getHolder();mHolder.addCallback(this);paint.setAntiAlias(true);paint.setTextSize(80);paint.setColor(Color.WHITE);}int j;@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);j++;Log.i(TAG, "C2=" + canvas.hashCode() + ",n=" + canvas.getClass().getName());//绘制 数字canvas.drawText("C2:"+j,getWidth() * 0.5f, getHeight() * 0.8f, paint);//定时 500 毫秒 刷新postInvalidateDelayed(500);}@Overridepublic void surfaceCreated(@NonNull SurfaceHolder holder) {//SurfaceView 的 onDraw 方法生效setWillNotDraw(false);//开启绘制线程new Thread(this).start();}@Overridepublic void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(@NonNull SurfaceHolder holder) {}int i;@Overridepublic void run() {try {Canvas canvas = mHolder.lockCanvas();//SurfaceView 清屏(不清屏,绘制图像会重叠在一起)canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);i++;Log.i(TAG, "C1=" + canvas.hashCode() + ",n=" + canvas.getClass().getName());//绘制 数字canvas.drawText("C1:"+i,getWidth() * 0.5f, getHeight() * 0.5f, paint);mHolder.unlockCanvasAndPost(canvas);postDelayed(this, 500);}catch (Exception e){Log.e(TAG,"run-ex="+e.getMessage());}}
}

Android SurfaceView 初识相关推荐

  1. 详解与重构hyman《Android SurfaceView实战 打造抽奖转盘》

    详解与重构hyman<Android SurfaceView实战 打造抽奖转盘> 作者:邵励治 一.概述--关于SurfaceView您不得不知道的二三事 1.SurfaceView是干什 ...

  2. Android SurfaceView实战 带你玩转flabby bird (下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43063331,本文出自:[张鸿洋的博客] 1.概述 在Android Surfa ...

  3. Android SurfaceView实战 带你玩转flabby bird (上)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 转载请标 ...

  4. Android SurfaceView实战 带你玩转flabby bird

    分析 仔细观察游戏,需要绘制的有:背景.地板.鸟.管道.分数: 游戏开始时: 地板给人一种想左移动的感觉: 管道与地板同样的速度向左移动: 鸟默认下落: 当用户touch屏幕时,鸟上升一段距离后,下落 ...

  5. Android SurfaceView简例

    Android SurfaceView简例 Android中各的SurfaceView和View有很大的不同,两者应用场景不同.大多数View能做的事情SurfaceView也可以,但是Surface ...

  6. Android SurfaceView 的应用

    SurfaceView 由于可以直接从内存或者DMA等硬件接口取得图像数据,因此是个非常重要的绘图容器,网上介绍 SurfaceView的用法有很多,写法也层出不同,例如继承SurfaceView类, ...

  7. android屏幕底部黑块,Android surfaceView 黑块问题

    很多Android机上会出现surfaceView结束播放后,出现概率的黑块,典型的解决方案 setZOrderMediaOverlay(false); setZorderTop(false); /* ...

  8. android SurfaceView

    为什么80%的码农都做不了架构师?>>>    参考:http://blog.csdn.net/luoshengyang/article/details/8661317/ 参考:ht ...

  9. Android SurfaceView的生命周期

    本文利用SurfaceView来实现视频的播放 本文地址:http://www.cnblogs.com/wuyudong/p/5851156.html,转载请注明源地址. 在main.xml布局文件添 ...

最新文章

  1. Nginx 挂了怎么办?怎么实现高可用?
  2. pytorch 查看模型参数,查看模型特定层输入输出,模型结构图绘制总结
  3. Gym - 101981I-MagicPotion-最大流
  4. 第一章 Linux是什么
  5. 如何将多个PDF合成为一个PDF,并且大小统一?
  6. PHP异步调用实现方式
  7. 竖屏小游戏--喵星战争源代码分析【完整】
  8. 数理统计-随机变量的数字特征:期望、方差、协方差、矩、协方差矩阵
  9. 小马Win7永久激活工具—OemY3.1 NT6通用完美激活
  10. 手把手教你使用Python提取快递信息
  11. 进制转换的算法及进制在线转换器
  12. centos启动停留在started GNOME display manager
  13. Application Loader上传app,一直卡在“正在通过 App Store 进行鉴定”
  14. 2019「友盟杯」数据分析大赛结果公布
  15. 什么是SaaS? 定义软件即服务
  16. 3D动态烟花--HTML
  17. webots仿真车轮打滑问题解决
  18. 湖盟知识—***、病毒、防火墙
  19. 查看windows文件名的编码
  20. 如何用迅雷或QQ旋风下载百度云上的资源?

热门文章

  1. 处理谷歌浏览器导出书签为json格式
  2. 浏览器书签导出导入,从Google谷歌浏览器导出,导入到Edge浏览器
  3. 计算机目前就业哪些专业就业比较好?
  4. 图像特征提取算法之LBP算法(2)
  5. Python基础编程——算术运算
  6. 手机上使用google 搜索引擎
  7. 美国金融工程计算机要学哪些,美国金融工程
  8. 【OpenCV--直方图】
  9. Ubuntu20.04固定内核版本
  10. 前后台加解密的使用--SHA256算法 RSA算法 AES算法