- 浏览: 145406 次
- 性别:
文章分类
- 全部博客 (226)
- Android (181)
- C# (8)
- BOOTSTRAP (1)
- ASP.NET MVC4 (1)
- 设计模式 (1)
- VB.NET (1)
- WPF (0)
- PLC (0)
- 电气图纸 (0)
- 数据库 (5)
- Java (5)
- Window phone (0)
- 仪器仪表 (0)
- 变频器 (0)
- 低压电器 (0)
- 物联网 (0)
- Photoshop (1)
- SVN (1)
- 单片机 (5)
- IT (1)
- Android_IOS风格 (0)
- Android_广告栏展示 (0)
- Android_动画 (1)
- Android_Adapter (0)
- Android_ListView (1)
- Android_File (2)
- Android_表单提交 (0)
- Android_WebView (1)
- PHP (2)
- Android_Excel (1)
- Android_drawable (1)
- Android_theme (2)
- Android_phonegap (2)
- Android_AndroidManifest (1)
- ThinkPHP (0)
- Jquery (1)
- Android_ContentProvider (1)
最新评论
SurfaceHolder,可以把它当成surface的控制器,用来操纵surface。处理它的Canvas上画的效果和动画,控制表面,大小,像素等。
几个需要注意的方法:
(1)、abstract void addCallback(SurfaceHolder.Callback callback);
// 给SurfaceView当前的持有者一个回调对象。
(2)、abstract Canvas lockCanvas();
// 锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。
(3)、abstract Canvas lockCanvas(Rect dirty);
// 锁定画布的某个区域进行画图等..因为画完图后,会调用下面的unlockCanvasAndPost来改变显示内容。
// 相对部分内存要求比较高的游戏来说,可以不用重画dirty外的其它区域的像素,可以提高速度。
(4)、abstract void unlockCanvasAndPost(Canvas canvas);
// 结束锁定画图,并提交改变。
几个需要注意的方法:
(1)、abstract void addCallback(SurfaceHolder.Callback callback);
// 给SurfaceView当前的持有者一个回调对象。
(2)、abstract Canvas lockCanvas();
// 锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。
(3)、abstract Canvas lockCanvas(Rect dirty);
// 锁定画布的某个区域进行画图等..因为画完图后,会调用下面的unlockCanvasAndPost来改变显示内容。
// 相对部分内存要求比较高的游戏来说,可以不用重画dirty外的其它区域的像素,可以提高速度。
(4)、abstract void unlockCanvasAndPost(Canvas canvas);
// 结束锁定画图,并提交改变。
package xl.test; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; public class ViewTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } //视图内部类 class MyView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder; private MyThread myThread; public MyView(Context context) { super(context); // TODO Auto-generated constructor stub holder = this.getHolder(); holder.addCallback(this); myThread = new MyThread(holder);//创建一个绘图线程 } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub myThread.isRun = true; myThread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub myThread.isRun = false; } } //线程内部类 class MyThread extends Thread { private SurfaceHolder holder; public boolean isRun ; public MyThread(SurfaceHolder holder) { this.holder =holder; isRun = true; } @Override public void run() { int count = 0; while(isRun) { Canvas c = null; try { synchronized (holder) { c = holder.lockCanvas();//锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。 c.drawColor(Color.BLACK);//设置画布背景颜色 Paint p = new Paint(); //创建画笔 p.setColor(Color.WHITE); Rect r = new Rect(100, 50, 300, 250); c.drawRect(r, p); c.drawText("这是第"+(count++)+"秒", 100, 310, p); Thread.sleep(1000);//睡眠时间为1秒 } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { if(c!= null) { holder.unlockCanvasAndPost(c);//结束锁定画图,并提交改变。 } } } } } }
发表评论
-
LayoutInflater
2014-12-22 21:43 548在实际开发中LayoutInflater这个类还是非常有用的, ... -
ContentProvider之读写短消息
2014-12-08 11:08 595http://blog.csdn.net/liuhe ... -
android之启用默认浏览器
2014-11-03 12:36 515一、启动android默认浏览器 Intent inten ... -
eclipse下看android support v4源码
2014-09-18 22:24 640http://cfy10.blog.51cto.com/707 ... -
Android学习 (七)synchronized
2014-09-17 10:16 629http://hi.baidu.com/fenghuang12 ... -
ScheduledExecutorService定时周期执行指定的任务
2014-09-17 09:57 668http://blog.csdn.net/tsyj810883 ... -
android rotate
2014-09-16 15:21 1219rotate:fromDegrees:其实角度。toDegr ... -
Android获取Manifest中<meta-data>元素的值
2014-09-12 15:39 677在AndroidManifest.xml中,<meta- ... -
PopupWindow
2014-09-12 11:09 8871-初始化 PopupWindow mPop = new P ... -
Android的事件分发onInterceptTouchEvent与onTouchEvent、OnClickListener、OnLongClick
2014-09-11 11:05 907onInterceptTouchEvent()是ViewGro ... -
scrollTo、scrollBy、getScrollX、getScrollY这4个方法的含义,Scroller的简单用法
2014-09-11 10:43 1588scrollTo、scrollBy都是 对 ... -
VelocityTracker
2014-09-11 10:14 686android.view.VelocityTracker主要用 ... -
android performClick使用
2014-09-09 13:53 1153performClick 是使用代码主动去调用控件的点击事件( ... -
slidingmenu使用说明
2014-09-07 10:17 611左侧、右侧和两边 在BaseActivity中将Slid ... -
Android之SlidingMenu属性详解
2014-09-07 09:52 669SlidingMenu 常用属性介绍: menu.setMod ... -
Android IOS风格侧边栏效果
2014-08-27 13:45 347http://download.csdn.net/detail ... -
android 代码设置、打开wifi热点及热点的连接
2014-08-26 10:30 1042见博客文章 http://blog.csdn.net/luob ... -
Android 之两点触摸技术
2014-08-26 09:58 744package mobile.android.multi.to ... -
Android动画之translate(位移动画)
2014-08-25 15:53 483http://www.cnblogs.com/bavariam ... -
Android 之ViewFlipper实现左右滑动动画效果
2014-08-25 15:31 7901)View切换的控件—ViewF ...
相关推荐
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
在Android开发中,"SurfaceHolder"是一个非常关键的接口,用于与SurfaceView进行交互,而SurfaceView则是一种特殊的视图,适用于处理高性能的图形绘制,比如视频播放、游戏画面或者像这里的条形码生成。"条形码"是...
在这个"android之surfaceview学习示例"中,我们将深入探讨SurfaceView的核心特性和使用方法。 首先,SurfaceView拥有自己的Surface对象,它位于窗口的最底层,直接与硬件交互,允许在主线程之外进行绘制操作,避免...
然后,设置SurfaceHolder的回调,以便初始化Camera。最后,监听Button点击事件,启动和停止扫描: ```java public class ScanActivity extends AppCompatActivity { private CaptureActivityHandler handler; ...
Android开发摄像头SurfaceView预览 背景画图(矩形和圆形) 实现(双surfaceview,顶层画矩形框,底层预览视频); UI:三个按钮 预览 摄像 图片保存,预览界面 可以显示(矩形和圆形等图画)
### Android音视频开发学习思路详解 #### 一、引言 随着移动互联网的发展,音视频技术在Android平台上的应用越来越广泛。无论是视频通话、在线教育还是直播应用,音视频技术都是核心之一。对于想要深入研究Android...
在Android开发中,实时显示摄像头视频是一个常见的需求,如创建相机应用、视频聊天软件等。本文将详细讨论如何使用SurfaceView来实现这一功能。SurfaceView是Android系统提供的一种用于高效显示动态图像的视图组件,...
Android Service是Android四大组件之一,它允许应用在没有用户交互的情况下运行,这对于需要长时间运行的任务非常有用。在这个场景中,我们讨论的是如何在后台启动一个服务来执行拍照操作。 首先,我们需要创建一个...
在Android平台上,开发人员经常需要实现视频播放功能。`MediaPlayer`是Android SDK提供的一种核心组件,专门用于播放音频和视频文件。在这个场景中,我们将详细探讨如何使用`MediaPlayer`来播放视频,同时结合`...
创建一个SurfaceTexture,然后在SurfaceHolder中设置它,用于接收相机的预览流。这一步不是必须的,因为静默拍照通常不需要显示预览,但为了确保正确捕获图像,预览流的配置仍然是必要的。 三、静默拍照 要实现静默...
在Android平台上,开发一款应用程序来实现通过Camera与SurfaceView选择摄像头并进行即时预览涉及到多个关键知识点。以下是对这些技术的详细解释: 1. **Camera API**:Android提供了Camera类,用于与设备上的摄像头...
7. **多线程**:为了保证游戏的流畅运行,游戏逻辑通常在独立的线程(如SurfaceHolder.Callback的SurfaceCreated方法启动的线程)中执行,以防止UI线程被阻塞。 8. **用户界面**:使用XML布局文件创建游戏界面,...
在Android平台上,Camera API是开发者用来实现相机功能的关键接口,它允许应用进行拍照、录制视频以及其他与摄像头相关的操作。在本文中,我们将深入探讨如何在Android应用中使用Camera API,并通过实例来解决一些...
在Android平台上实现静默拍照是一项常见的需求,尤其是在自动化测试、安全监控或者隐私保护等场景下。这个主题主要针对的是Android 4.4 (KitKat)及以上版本,但不包括Android 8.0 (Oreo)以下的操作系统。下面将详细...
在Android平台上,调用外接摄像头是一项常见的功能,尤其对于那些需要进行图像处理或多媒体应用的开发者来说至关重要。本文将详细讲解如何在Android应用中实现这一功能,包括拍照、录像以及调整摄像头方向。 首先,...
在Android平台上进行应用程序开发时,摄像头的使用是一个常见的需求,特别是在构建相机相关的应用时。本教程将详细讲解如何实现一个Android小程序,以实现在运行时切换前后摄像头的功能。这一过程涉及到了Android...
在`onCreate()`方法中,我们通常会创建并设置这些视图,并在`SurfaceHolder.Callback`回调中启动相机预览。 ### 控制相机参数 `Camera`类的`Parameters`对象提供了设置相机参数的方法,例如调整焦距、白平衡、曝光...
本压缩包“Android应用源码之Android使用SurfaceView实现墨迹天气的风车效果.zip”显然是一个示例项目,展示了如何利用SurfaceView来实现类似墨迹天气应用中的风车动画效果。 SurfaceView的工作原理: 1. ...
在Android开发中,创建自定义背景,特别是动态背景,是一个有趣且挑战性的任务。动态壁纸不仅为用户提供了个性化手机的机会,还可以通过动画效果提升用户体验。本项目“android自定义背景动态背景”提供了一种实现这...