SurfaceView 画笔随机颜色满天星
来源:互联网 发布:视频大数据分析 编辑:程序博客网 时间:2024/04/28 04:06
SurfaceView是个重要的绘图容器,它可以在主线程外的线程中向屏幕绘图,这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。
可以把Surface理解为显存的一个映射,写入到Surface的内容可以直接复制到显存从而显示出来,这会使得显示速度非常快),Surface被销毁之前必须结束。
代码块:
package com.example.lesson_surfaceview;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MySurfaceView(this)); }}
package com.example.lesson_surfaceview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.SurfaceHolder;import android.view.SurfaceView;/** * Created by Administrator on 2017/3/20 0020. */public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback,Runnable { public MySurfaceView(Context context) { super(context); init(); } SurfaceHolder holder; // 创建笔 Paint paint = new Paint(); private void init() { // 添加回调监听 holder = getHolder(); // 实现SurfaceHolder.Callback接口 holder.addCallback(this); // 设置笔的大小(单位float) paint.setStrokeWidth(100f); } private void myDraw(Canvas canvas) { // 设置画笔的颜色(把画笔的颜色设置成随机颜色,要放到这个方法里面才能出现重复随机(循环中调用了这个方法)) paint.setARGB((int) (Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)); // 设置在画布画点(point)和画笔随机出现的位置 canvas.drawPoint((int)(Math.random()*getWidth()),(int)(Math.random()*getHeight()),paint); } public MySurfaceView(Context context, AttributeSet attrs) { super(context, attrs); init(); } @Override public void surfaceCreated(SurfaceHolder holder) { // 实现Runnable接口创建线程开启线程 new Thread(this).start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } @Override public void run() { while(true){ Canvas canvas = holder.lockCanvas(); // 要自己写Draw方法 myDraw(canvas); holder.unlockCanvasAndPost(canvas); } }}
运行效果如图所示
0 0
- SurfaceView 画笔随机颜色满天星
- 4.4.2.1 创建随机颜色的画笔
- 满天星
- 满天星
- 满天星
- 画笔在手,颜色由心
- MFC之改变画笔颜色
- 随机颜色
- 随机颜色
- 随机颜色
- 颜色随机
- 设置SurfaceView 背景颜色
- [Android实例] 手写签名,画笔颜色选择器
- 画笔
- 画笔
- 画笔
- java 满天星
- C#生成随机颜色
- 2017GMTC全球移动技术大会——“11大顶级主题专场”
- Git:代码冲突常见解决方法
- 算法17:实现memcpy(void *src, int size, void *dest)
- spring ModelAttribute
- jQuery中ready与load事件的区别
- SurfaceView 画笔随机颜色满天星
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统
- 阻止firefox自动升级更新工具
- Nginx负载均衡配置实例详解
- java list set array 转换
- CRC
- 大前端relative和absolute详解
- fig06_28.cpp
- iOS开发--常见的退出键盘的几种方式