- 浏览: 138596 次
- 性别:
文章分类
最新评论
在继承SurfaceView的类中即使重写了onDraw()方法也是没有用的,因为SurfaceView虽然继承自View,但并没
重写onDraw(),其子类可以重写onDraw()但并不能自动调用。
解决办法:
首先SurfaceView的子类XXX要 implements SurfaceHolder.Callback,然后定义private SurfaceHolder sh = null;
在其构造函数中:
public XXX(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
sh = getHolder();
sh.addCallback(this);
}
//自定义绘制函数
public void doDraw(){
Paint p = new Paint(); // 笔触
p.setAntiAlias(true); // 反锯齿
p.setColor(Color.RED);
p.setStyle(Style.STROKE);
Canvas canvas = sh.lockCanvas();
canvas.drawColor(Color.WHITE);//背景
canvas.drawRect(10, 10, 100, 100, p);
sh.unlockCanvasAndPost(canvas); //提交绘制内容
}
在需要绘制的地方调用doDraw()即可。
//继承自view的onDraw方法
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint p = new Paint(); // 笔触
p.setAntiAlias(true); // 反锯齿
p.setColor(Color.RED);
p.setStyle(Style.STROKE);
canvas = sh.lockCanvas();
canvas.drawColor(Color.WHITE);//背景色
canvas.drawRect(10, 10, 200, 200, p);
sh.unlockCanvasAndPost(canvas); //提交绘制内容
}
在需要绘制的地方调用onDraw(null)即可。
注:重写SurfaceView的draw(),最终还是调用的onDraw(),但是调用draw(null)时会有异常。
发表评论
-
Android onTouchEvent, onClick及onLongClick的调用机制
2012-03-08 15:44 893针对屏幕上的一个View控件,Android如何区分应当触发o ... -
android 常用颜色表
2012-03-09 16:01 920<?xml version="1.0" ... -
android ndk 环境搭建及基本编程思路
2012-03-28 16:09 885本文主要是介绍一下android ndk环境搭建及基本编程思路 ... -
windows下eclipse android-ndkr7b环境配置
2012-03-31 19:49 927注意:android-ndkr7b版本中已经集成了cyg ... -
配置 eclipse ndk 环境遇到的问题
2012-04-01 08:52 1054困惑了两天的环境配置问题,按照网上提供的方法去做总是错误 ... -
Android 配置 OpenCV2.3.1
2012-04-01 17:56 2053OpenCV2.3.1-android中大部分重要的AP ... -
Android中dip与px之间单位转换
2012-04-11 16:10 729/** * 根据手机的分辨率从dip 的单位转成为px(像素 ... -
Android 自定义像素AVD模拟器无键盘
2012-04-18 14:26 3397在Android自定义像素(如:800X480)时,AV ... -
在Android虚拟机AVD中安装APK
2012-04-18 15:13 2711为了方便测试,有时候会需要在自定义的Android虚拟机A ... -
Android 自定义渐变背景
2012-07-04 08:36 1357在Eclipse的Android工程的res下建立dra ... -
Android 隐藏系统状态栏和标题栏
2012-07-04 09:06 1263Android中若想 隐藏系统状态栏和标题栏(全屏显示)的 ... -
Android双SurfaceView实现底部拍照,顶部绘图
2012-07-04 10:36 1543当SurfaceHolder对象的类型设置为Surf ... -
Android数据的四种存储方式之SharedPreferences、SQLite、ContentProvider和File
2012-07-06 15:32 2846Android系统一共提供了四种数据存储方式,分别 ... -
Android SQLite存取图像
2012-07-06 18:36 948Android SQLite存取图像的简单方法如下: ... -
Android 继承SQLiteOpenHelper自定义DBHelper存取数据与图像
2012-07-10 15:07 1419Android 继承SQLiteOpenHelper自定 ... -
Android使用SQLiteDatabase直接存取数据与图像
2012-07-10 15:15 1097Android使用SQLiteDatabase直接存取数 ... -
Android 系统菜单与自定义菜单
2012-07-25 16:28 2298Android 系统菜单与自 ...
相关推荐
7. **兼容性问题**: 虽然SurfaceView提供了高效绘制的能力,但它在不同版本的Android系统中可能有不同的行为。因此,进行跨版本测试是必要的,以确保动画在各种设备上表现一致。 通过以上知识点,开发者可以构建出...
它提供了基本的绘图功能,通过onDraw()方法来绘制内容。View的操作通常在主线程中进行,因此受到UI线程同步限制,不适合处理复杂的、耗时的图形操作,以免阻塞UI更新,导致应用无响应(ANR)。 **SurfaceView** ...
总的来说,这个项目涵盖了Android开发中的多个关键知识点,包括`SurfaceView`的使用、手势识别、图片处理、自定义绘图以及邮件发送。通过这个项目,开发者可以学习到如何在Android应用中实现类似地图应用的交互功能...
开发者通常会在SurfaceView的子类中重写`onDraw()`方法,进行绘图操作,并通过`Canvas`对象绘制图形。 在这个触屏烟花程序中,我们可以推测以下几个关键知识点: 1. **SurfaceHolder**: SurfaceView有一个内部类...
首先,`SurfaceView`是Android视图系统的一部分,它提供了一个独立于主线程的绘制环境,允许开发者在单独的线程中进行高效率的图像处理,避免了UI线程阻塞导致的卡顿问题。这使得`SurfaceView`特别适合用来创建动态...
总的来说,这个压缩包提供了一个很好的学习机会,可以帮助开发者深入理解Android的SurfaceView以及如何利用它来创建复杂的动画效果,对于想要涉足游戏开发或需要高性能绘图功能的Android开发者来说,这是一个非常...
SurfaceView通过创建一个单独的SurfaceHolder来处理绘图操作,这个holder提供了回调方法,如`surfaceCreated()`, `surfaceChanged()`, 和 `surfaceDestroyed()`,开发者可以在这些方法中进行初始化、调整和清理工作...
这通常通过`postInvalidate()`或者`holder.unlockCanvasAndPost(canvas)`来实现,它们会触发`onDraw()`方法,然后在该方法中使用`canvas`进行实际的绘图操作。 总的来说,使用`SurfaceView`实现自由手绘是一个涉及...
5. **Canvas与绘图**:SurfaceView的`onDraw()`方法中,我们可以获取到一个Canvas对象,通过这个对象我们可以绘制Bitmap以及其他图形元素。在拖动操作中,我们需要清除Canvas(`canvas.drawColor()`),然后根据新的...
SurfaceView在Android开发中是一种特殊的View,主要用于处理高性能、低延迟的图形绘制,例如游戏、视频播放或像抽奖转盘这样的复杂动画。SurfaceView通过创建一个独立的Surface,并将其渲染到窗口上,允许UI更新与...
这个"安卓头像制作图片圆角剪裁相关-Android圆形相机预览窗口圆形SurfaceView.zip"的压缩包,就包含了实现这一功能的相关代码示例。下面我们将深入探讨这个主题。 首先,我们来理解"圆形SurfaceView"的概念。在...
5. **自定义绘图**: SurfaceView可以重写其子类的`onDraw()`方法来自定义绘图逻辑,从而实现各种复杂的动画效果或游戏场景。 下面是一个简单的SurfaceView使用例子: 首先,创建一个继承自SurfaceView的类,并实现...
`SurfaceView`是Android系统提供的一种特殊的视图,它的主要特点是拥有自己的独立绘图表面,并且绘图操作是在一个单独的线程中进行的,这使得`SurfaceView`非常适合处理高频率、低延迟的图形绘制,比如手写板、游戏...
View提供了绘制功能,通过onDraw()方法进行自定义绘图。然而,由于View的渲染机制,它并不适合进行频繁的、高性能的图形更新。因为View的绘制过程发生在UI线程中,当进行复杂的图形操作时,可能导致UI线程阻塞,从而...
在Android开发中,SurfaceView是一个重要的视图组件,它提供了在主线程之外进行绘图的能力,使得复杂的动画或视频播放等高性能图形操作得以流畅执行。本项目实例将深入探讨如何在Android Studio环境下利用...
《迷你小鸟Android SurfaceView游戏开发详解》 在Android游戏编程领域,SurfaceView是开发者们常用的一个组件,尤其对于初学者来说,它是一个很好的起点。本文将深入探讨如何使用SurfaceView来构建一个简单的“迷你...
本示例代码"Android应用源码之Android使用SurfaceView实现墨迹天气的风车效果"着重展示了如何利用SurfaceView来创建动态、交互式的UI组件,尤其是模拟墨迹天气应用中的风车动画效果。SurfaceView是Android中用于处理...
- 一个自定义的SurfaceView类,继承自SurfaceView,并重写相关的方法,如onDraw(),用于执行实际的绘图逻辑。 - SurfaceHolder.Callback接口的实现,用于监听Surface的状态变化。 - 在Activity或Fragment中添加...
这个过程涉及到Canvas绘图、动画处理以及Android帧率控制等多个核心知识点。 首先,我们要理解Android中的自定义控件。自定义控件通常是通过继承`View`或`ViewGroup`类来实现的。在这个案例中,我们可以选择直接...