android学习之surfaceview
2016-04-20 20:33
246 查看
今天因为下午编程太累了,就想总结一下之前了解过的surfaceview,结果,唉,运行的结果总是在意料之外,好在最后终于调试好了,还是贴代码吧,感觉代码和注解才是真爱
然后,这个的用法就和view的用法一样。。。可以回去休息了
package com.jk.surfaceview; import java.util.Random; import android.R.color; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.util.AttributeSet; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView; public class MySurface extends SurfaceView { //declare a surfaceHolder object SurfaceHolder holder; public MySurface(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); //get a holder holder = getHolder(); //add a callback event holder.addCallback(new Callback() { RenderThread render; @Override public void surfaceDestroyed(SurfaceHolder holder) { // let the thread dead render.isrun = false; } @Override public void surfaceCreated(SurfaceHolder holder) { //init a thread and start the thread render = new RenderThread(); render.isrun = true; render.start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } }); } public MySurface(Context context, AttributeSet attrs) { this(context, attrs, 0); // TODO Auto-generated constructor stub } public MySurface(Context context) { this(context, null); // TODO Auto-generated constructor stub } public void hua(Canvas canvas) { //full the canvas canvas.drawARGB(255, 255, 0,0 ); Paint paint=new Paint(); //draw a rect canvas.drawRect(1, 1, 100, 100, paint); } class RenderThread extends Thread { //set the isrun is false public boolean isrun = false; @Override public void run() { super.run(); while (isrun) { //though the holder to lock the canvas Canvas canvas = holder.lockCanvas(); //begin to draw hua(canvas); //unlock the canvas and post the content holder.unlockCanvasAndPost(canvas); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
然后,这个的用法就和view的用法一样。。。可以回去休息了
相关文章推荐
- Android 中的(意图Intent)机制,常见应用
- Android layout 布局 属性详解
- android基础---->发送和接收短信
- Android studio的genymotion的安装
- Android Volley完全解析(一),初识Volley的基本用法
- Android之列表索引
- Android—复选框和单选框使用
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Ubuntu 下Android Studio基本配置
- <Android 应用 之路> 简易贪吃蛇
- <Android 应用 之路> 简易贪吃蛇
- android开发之WifiP2p Service Discovery
- Android中ListView的优化方法
- 怎样的Android开发毕业生可以算达到优秀的水平
- android版本更新代码
- [Android] RelativeLayout, LinearLayout,FrameLayout
- Android-获取屏幕高度和宽度
- Android 二维码扫描框 加四个角及中间横线自动下滑
- ViewPager数据修改使用notifyDataSetChanged无刷新的问题
- Android SwipeRefreshLayout基本用法