android--(绘制几何图形、图片、surfaceView)
来源:互联网 发布:ipv6加端口号访问 编辑:程序博客网 时间:2024/05/02 16:49
/** * 自定义 图形 */public class Mview extends View { public Mview(Context context) { super(context); } /** * 是一个事件方法, 会在组件 加载时 调用 * * @param canvas :画布 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); /** * 设置颜色为白色 */ canvas.drawColor(Color.WHITE); Paint paint = new Paint(); /** * 去锯齿 */ paint.setAntiAlias(true); /** * 设置 paint 的颜色 */ paint.setColor(Color.RED); /** * 设置 paint的 style 为stroke :空心 */ paint.setStyle(Paint.Style.STROKE); /** * 设置 paInt 的外框 宽度 */ paint.setStrokeWidth(3); /** * 画一个空心圆形 * * 参数:圆心x,圆心Y,半径r,paint */ canvas.drawCircle(40, 40, 30, paint); /** * 画一个长方形 * 参数:let top right bootom */ canvas.drawRect(10, 170, 70, 200, paint); /** * 画一个空心椭圆形 */ RectF re = new RectF(10, 220, 70, 250); canvas.drawOval(re, paint); /** * 画一个空心三角形 */ Path path1 = new Path(); path1.moveTo(10, 330); //从哪个点 到 哪个点 path1.lineTo(70, 330);//边 path1.lineTo(40, 270); path1.close(); canvas.drawPath(path1,paint); }}public class MyView extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new Mview(this)); } }
/** * 自定义 画图片 */public class Mview extends View { public Mview(Context context) { super(context); } /** * 是一个事件方法, 会在组件 加载时 调用 * * @param canvas :画布 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画笔 Paint p = new Paint(); //从资源中得到 图片 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); //绘制图片 canvas.drawBitmap(bitmap, 0, 0, p); }}public class MyView extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new Mview(this)); } }
/** * 自定义 surfaceView(相当于独立的一块屏幕) */public class MysurfaceView extends SurfaceView implements SurfaceHolder.Callback { //控制屏幕绘制的对象 private SurfaceHolder holder; private MyThread myThread; public MysurfaceView(Context context) { super(context); holder = getHolder(); //添加回调接口,因为实现了,所以传this,对象一创建就调用回调的方法 holder.addCallback(this); } class MyThread implements Runnable { private SurfaceHolder holder; Canvas canvas = null; //作用:线程什么进侯开始,什么时侯结束 private boolean isRun; public MyThread(SurfaceHolder holder) { this.holder = holder; isRun = true; } @Override public void run() { int count = 0; while (isRun) { try { synchronized (holder) {//因为有多个 线程在操作,所以要同步 //锁定一个画布,锁定后,可以通过其返回的 画布对象 Canvas,在上面画图等操作了 canvas = holder.lockCanvas(); canvas.drawColor(Color.BLACK); Paint paint = new Paint();//创建画笔 paint.setColor(Color.RED); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL);//画笔为实心的 RectF rect = new RectF(10, 10, 100, 100); canvas.drawRect(rect, paint);//画矩形 paint.setTextSize(30);//字体大小 canvas.drawText("当前是第" + (count++)+"秒", 10, 150, paint); Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); } finally { holder.unlockCanvasAndPost(canvas);//释放 画布的锁 } } } } /*************** 事件回调方法 *********************************/ /** * 回调 * * @param holder */ @Override public void surfaceCreated(SurfaceHolder holder) { myThread = new MyThread(holder); myThread.isRun = true; new Thread(myThread).start(); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { }}public class My extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MysurfaceView(this));//实例化surfaceView } }
0 0
- android--(绘制几何图形、图片、surfaceView)
- Android绘制几何图形
- android绘制几何图形
- android自定义View绘制几何图形
- android自定义View绘制几何图形
- android自定义View绘制几何图形
- Android自定义View绘制几何图形
- android自定义View绘制几何图形
- android游戏开发初学之SurfaceView绘制图片
- Android SurfaceView绘制
- android:SurfaceView绘制图形
- 绘制几何图形
- 绘制几何图形
- android 几何图形的绘制(转载)
- Android游戏Graphics绘图之几何图形绘制
- Android之Graphics 简单绘制几何图形
- 绘制几何图形:使用android.graphics类
- Android之Graphics 简单绘制几何图形
- Java changeFileName
- 全面解析YunOS
- 自定义标题栏(中间是三个文本)
- url 大小写
- js 常用函数
- android--(绘制几何图形、图片、surfaceView)
- ZOJ 1654_Place the Robots(建立二分图)
- JAVA学习笔记之抽象类
- PyQt4 学习笔记4之事件与信号
- poj3579,二分找答案,再二分查找
- assert()函数用法总结
- Ubuntu Apache2开启mod_rewrite解决laravel路由失效问题
- 【数据加密】AES加密和解密安卓篇(一)
- Hive数据倾斜