/**
* 画布
*
* @author 岳振华
*
*/
@SuppressWarnings("unused")
public class CanvasSrufaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder sfh;
private Thread thread;
private int surfaceW, surfaceH;
private Paint paint;
private Canvas canvas;
private PaintFlagsDrawFilter drawFilter=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
public CanvasSrufaceView(Context context) {
super(context);
/********** 画图所必需 *********************/
sfh = this.getHolder();// 获得surfaceHolder对象
sfh.addCallback(this);
thread = new Thread(this);
paint = new Paint();// 新建画笔
paint.setColor(Color.RED);// 设置画笔颜色
paint.setAntiAlias(true);// 消除锯齿
this.setKeepScreenOn(true);// 保持屏幕常亮
this.setFocusable(true);
/********************************************/
}
/**
* 开始动画
*/
@Override
public void startAnimation(Animation animation) {
super.startAnimation(animation);
}
/**************************** callback的几个方法 ********************/
/**
* 当Surface第一次创建后会立即调用该函数 一般情况下都是在另外的线程来绘制界面,所以不要在这个函数中绘制Surface
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
surfaceW = this.getWidth();
surfaceH = this.getHeight();
thread = new Thread(this);
thread.start();// 开启线程
}
/**
* 当Surface的状态(大小和格式)发生变化的时候会调用 该函数 在surfaceCreated调用后该函数至少会被调用一次
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
/**************************** callback的几个方法 ********************/
/**
* 绘图方法
*/
private void draw() {
try {
// 获得canvas实例
canvas = sfh.lockCanvas();
if (canvas != null) {
//paint =new Paint();
//paint.setAntiAlias(true);
// 消除锯齿
canvas.setDrawFilter(drawFilter);
// 利用填充画布,刷屏
canvas.drawColor(Color.BLACK);
//绘制文本
canvas.drawText("岳振华", 50, 50, paint);
//绘制象素点
canvas.drawPoint(10, 20,paint);
//绘制多个象素点(同一直线上的)
canvas.drawPoints(new float[]{10,30,30,30}, paint);
//绘制直线
canvas.drawLine(20, 40, 40, 40, paint);
//绘制多条直线
canvas.drawLines(new float[]{20,50,40,50,20,60,40,60}, paint);
//方法一:绘制矩形
canvas.drawRect(30, 60, 60, 90, paint);
//方法二:绘制矩开
Rect rect=new Rect(70, 60, 100, 100);
canvas.drawRect(rect, paint);
//绘制圆角矩形
RectF rectF=new RectF(30, 100, 60, 150);
canvas.drawRoundRect(rectF, 2, 2, paint);
//绘制圆形
canvas.drawCircle(100, 200, 10, paint);
//绘制弧形
canvas.drawArc(new RectF(150, // 第一个和第三个参数表半径
20,//
160, // 第二个参数表弧度
70), //
0, 180, true, paint);
//绘制椭圆
canvas.drawOval(new RectF(200,50,260,70), paint);
//绘制指定路径的图形(多边形)
Path path=new Path();
//设置路径起点
path.moveTo(160, 150);
//路线1
path.lineTo(200, 150);
//路线2
path.lineTo(180, 200);
//路线3
path.lineTo(160, 180);
//路径结束
path.close();
canvas.drawPath(path, paint);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != canvas) {
sfh.unlockCanvasAndPost(canvas);// 提交画布
}
}
}
@SuppressWarnings("static-access")
@Override
public void run() {
// 绘图
draw();
try {
thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
### Android开发学习笔记 #### Button按钮的实现与交互 在Android开发中,`Button`控件是最常用的用户界面元素之一,用于触发特定的操作或事件。本文档将详细讲解如何创建并自定义一个简单的按钮,并设置点击事件...
本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android的基本概念和开发技术。 一、Android系统架构 Android系统架构是Android开发的基础,系统架构包括Linux Kernel、...
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
Android 应用开发学习笔记是一个详细的 Android 应用开发学习指南,从 Android 应用开发的基本概念到高级主题,本笔记涵盖了 Android 应用开发的各个方面。 第 1 章 Android 概述 Android 是一个免费的、开源的...
新版Android开发教程&笔记--基础入门二 新版Android开发教程&笔记三--环境搭建与解析 新版Android开发教程&笔记四--Dalvik ADB 新版Android开发教程+笔记五--模拟器、应用1、2 新版Android开发教程+笔记六--应用3、4...
总之,这份"Android开发笔记"是一套全面的学习资源,涵盖了从基础到进阶的Android开发知识,特别关注在real6410开发板上的实践。通过深入阅读并实践这些教程,开发者不仅可以提升Android应用开发技能,还能掌握在...
【Android开发教程笔记完全版】是一份全面的Android开发学习资料,旨在帮助新手小白和有一定经验的程序员深入理解和掌握Android应用开发技术。这份资源包含了从基础到进阶的多个层次的知识点,对于想要踏入Android...
Android开发是全球最受欢迎的移动应用开发平台之一,广泛应用于智能手机、平板电脑以及各种智能设备上。这份"Android开发教程笔记完全版"涵盖了Android开发的基础到高级主题,旨在帮助开发者全面理解并掌握Android...
新版Android开发教程&笔记--基础入门二.pdf 新版Android开发教程&笔记三--环境搭建与解析.pdf 新版Android开发教程&笔记四--Dalvik ADB.pdf 新版Android开发教程+笔记五--模拟器、应用1、2.pdf 新版Android开发教程+...
新版Android开发教程&笔记二--基础入门2 新版Android开发教程&笔记三--环境搭建与解析 新版Android开发教程&笔记四--Dalvik ADB 新版Android开发教程&笔记五--模拟器、应用1、2 新版Android开发教程&笔记六--应用3、...
在本资源包“黑马程序员 从零开始征服Android之旅(第一季)源码和笔记 下”中,我们聚焦于Android应用程序开发的基础与实践。通过学习,你可以系统地掌握Android开发的核心概念,逐步成长为一名合格的Android开发者...
这篇学习笔记是作者在2013年初开始学习手机游戏编程的记录,主要聚焦于Android平台。笔记首先讲述了作者学习编程的初衷和决心,然后详细介绍了从安装和配置Android开发环境,到使用Eclipse+ADT开发一个简单的数独...
【Android Studio开发笔记APP详解】 Android Studio是Google官方推荐的Android应用开发集成开发环境(IDE),它提供了丰富的功能,使得Android应用开发变得更加高效和便捷。本教程将基于Android Studio,详细解析一...
这篇学习笔记将引导新手入门,通过创建第一个简单的案例来了解Android Studio的基本操作。 首先,让我们了解一下Android Studio的核心功能。它基于IntelliJ IDEA,具备代码自动补全、重构、调试等强大的开发特性。...
android基础教程,里边包括新版Android开发教程&笔记1--基础入门,Android开发教程&笔记2--基础入门二,Android开发教程&笔记3--环境搭建与解析,Android开发教程&笔记4--Dalvik ADB Android开发教程+笔记5--模拟器...
Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发...
### Android高级编程学习笔记 #### 1. Android安全性 Android安全性是高级开发中非常重要的一环。安全性主要由底层的Linux内核提供,并且涉及到应用程序之间的数据隔离与通信控制。 ##### 1.1 Linux内核安全 每...
总之,《Android开发教程笔记完全版》是一份全面的学习资源,涵盖了从入门到进阶的Android开发知识,无论你是对Android编程感兴趣的新手,还是寻求深化技能的专业开发者,都能从中受益。通过深入学习和实践,你将...