Android SurfaceView 使用
来源:互联网 发布:知耻阅读答案 编辑:程序博客网 时间:2024/06/14 06:39
public class SurfaceViewDemo extends android.view.SurfaceView { public static final int DELAY_MILLIS = 1; private SurfaceHolder mHolder; private Paint mPaint; private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { startDrawTask(); mHandler.sendEmptyMessageDelayed(123, DELAY_MILLIS); return false; } }); private float mRadius = 10; public SurfaceViewDemo(Context context) { this(context,null); } public SurfaceViewDemo(Context context, AttributeSet attrs) { this(context, attrs,0); } public SurfaceViewDemo(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { mHolder = getHolder(); /** * surface生命周期回调 */ mHolder.addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { mHandler.sendEmptyMessageDelayed(123, DELAY_MILLIS); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { } }); } private void startDrawTask() { /** *开始绘制的起始方法; * 返回的canvas,用来绘制,如果surface没有创建就为null; * 通过mHolder.addCallback()surface生命周期的回调,判断surface是否创建 */ Canvas canvas = mHolder.lockCanvas(); mPaint = new Paint(); /** * surface再次绘制,清空上次绘制内容的方法 */ mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); canvas.drawPaint(mPaint);//drawpaint 相当于用这个paint drawRect mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); mRadius += 10; if (mRadius > 540) { mRadius = 10; } mPaint.setTextSize(30); mPaint.setStrokeWidth(5); mPaint.setColor(Color.WHITE); mPaint.setStyle(Paint.Style.FILL); canvas.drawText(String.format("重绘间隔:%dms",DELAY_MILLIS),50,50,mPaint); canvas.drawText(String.format("绘制半径:%dpx",(int)mRadius),50,100,mPaint); mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.STROKE); canvas.drawCircle(540,540,mRadius, mPaint); //与invalidate()不同,不会重绘而是覆盖绘制,所以多次绘制考虑清除上次绘制的内容 /** * 停止对surface的编辑,调用后surface的内容会被展示出来 */ mHolder.unlockCanvasAndPost(canvas); }}
阅读全文
0 0
- Android的SurfaceView使用
- Android surfaceview使用详解
- [Android] SurfaceView使用实例
- Android SurfaceView使用 笔记
- Android SurfaceView使用
- Android SurfaceView使用详解
- [Android] SurfaceView使用实例
- android中surfaceView使用
- [Android] SurfaceView使用实例
- [Android] SurfaceView使用实例
- Android使用SurfaceView画图
- Android的SurfaceView使用
- Android SurfaceView简单使用
- android SurfaceView使用
- Android之SurfaceView使用
- Android SurfaceView使用详解
- Android--SurfaceView使用详解
- Android SurfaceView使用详解
- kaggle学习经验
- 友盟统计,自定义事件常见问题
- LeetCode503. Next Greater Element II
- Python list动态分配内存示例
- QT QLineEdit背景文字提示
- Android SurfaceView 使用
- zabbix系列(一)zabbix3.0.7微信告警配置详解
- java.lang.UnsatisfiedLinkError 解决方法
- HDU
- 算法 第四版 1.4.16
- angular之表单验证ngMessages
- C++的继承中构造和析构函数的调用顺序
- Eclipse Debug界面详解
- LA3882 And Then There Was One