Android全屏绘制 Surface的使用
来源:互联网 发布:c语言编程软件 编辑:程序博客网 时间:2024/05/23 01:02
这个是为实现全屏手写输入准备的。
Android平台自身提供了一个底层的显示接口-FLINGER服务,通过这个接口,我们可以实现创建一个新的显示区域来绘制想要的显示内容,并和原有的屏幕输出混合输出到屏幕上。
要在普通应用里使用这个接口,
1、必须指定在AndroidManifest.xml里指定android.permission.ACCESS_SURFACE_FLINGER权限,添加:
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
2、用系统KEY来签名包,在Android.mk里写上:
LOCAL_CERTIFICATE := platform
然后就可在应用里使用FLINGER服务了,实例片段如下:
- mSurfaceSession = new SurfaceSession(); //连接到FLINGER服务
- try {
- //创建一个Surface,并在上面绘制
- mSurface = new Surface(mSurfaceSession,
- Process.myPid(),
- Display.DEFAULT_DISPLAY,
- 240, 320,
- PixelFormat.TRANSPARENT,
- 0);
- //通过刚创建的Surface里获取一个Canvas,通过这个接口来绘制
- Canvas canvas = mSurface.lockCanvas(null);
- canvas.drawColor(0x0);
- Paint p = new Paint();
- p.setColor(Color.RED);
- canvas.drawLine(0, 0, 240, 320, p);
- canvas.drawLine(240, 0, 0, 320, p);
- //提交更新,让新的内容输出到屏幕
- mSurface.unlockCanvasAndPost(canvas);
- mSurface.openTransaction();
- //mSurface.setPosition(0, 0);
- //mSurface.setSize(240, 320);
- //让这个Surface显示到最上层
- mSurface.setLayer(99999);
- mSurface.show();
- mSurface.closeTransaction();
- }
- catch (OutOfResourcesException e)
- {
- Log.e(TAG, e.toString());
- }
通过SurfaceSession, 我们可以创建多个Surface, Surface之间的混合是由FLINGER服务直接完成的, 使用者不需要关心, 直接在绘制即可。
如果内核支持多层, 通过打开/dev/fbX来直接写屏,应该可以实现相同的效果, 不过貌似用官方接口正规一些。
没图没真相,上示例的图
- Android全屏绘制 Surface的使用
- Android Framework学习笔记 -- Surface的绘制过程
- Android Framework学习笔记 -- Surface的绘制过程
- Android全屏绘制
- Android全屏绘制
- Android全屏绘制
- Android全屏绘制
- Android surface view 的一些使用
- 在使用drawBitmap()将绘制的图片全屏显示
- Android上的Surface
- android的Surface详解
- 使用 的surface缓冲
- Android SurfaceView 分析及 C/C++通过surface绘制UI
- 全屏绘制
- Android学习之Surface一,application与surface的关系
- Android中surface,surfaceview,sufaceholder以及surface客户端的关系
- java 绘制一个全屏的三角形
- 【Android游戏开发之一】:设置全屏以及简单的图形绘制
- zoj 1204
- Android 2.3 如何去除camera的gps定位
- Oracle Record is Locked by anther user 表被锁
- Ubuntu 系统中汉字不能显示的修正方法[持续添加中]
- 初装Linux网络优化
- Android全屏绘制 Surface的使用
- 要养成良好的书写Sql的习惯 ---------转自wanghangzhou1984
- 从甲乙丙的关系看自然语言理解的“第二路径”
- php 今天星期几
- in和exists的区别与SQL执行效率分析
- 计算质数
- (四)TagSupport类方法与页面执行流程
- jQuery以json格式调用 Web Service
- ubuntu安装ACE过程