- 浏览: 1591537 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
Create simple effects for your images (IV) - 3D Projection
在 Android SDK 中有兩種 Camera classes。一個是
android.hardware.Camera,這是用來操控相機功能的類別。另一個是
android.graphics.Camera,這是什麼東西?今天我們就要來研究一下,這個類別能幫我們做些什麼事。
android.graphics.Camera 是一個可以讓你將 2D 物件在 3D 空間中移動,並將在其移動後的結果,畫在螢幕上的類別。
聽起來很有趣,是嗎?例如,最上面那張美女圖,你可以看出來,他是將原本的圖,以 Y 軸為軸心,旋轉約 30 度後,所畫出來的結果。
打開 android.graphics.Camera 的說明文件,你會發現,這個文件中只有下面這些 APIs 列表,什麼說明都沒有。
1. //Public Constructors
2. Camera()
3. //Public Methods
4. void applyToCanvas(Canvas canvas)
5. float dotWithNormal(float dx, float dy, float dz)
6. void getMatrix(Matrix matrix)
7. void restore()
8. void rotateX(float deg)
9. void rotateY(float deg)
10. void rotateZ(float deg)
11. void save()
12. void translate(float x, float y, float z)
//Public Constructors Camera() //Public Methods void
applyToCanvas(Canvas canvas) float dotWithNormal(float dx, float dy,
float dz) void getMatrix(Matrix matrix) void restore() void
rotateX(float deg) void rotateY(float deg) void rotateZ(float deg) void
save() void translate(float x, float y, float z)
不過,從這些 APIs 的名稱與參數,你應該可以猜出一些端倪。沒錯,這個 Camera class,其實是個 helper
class。他提供一些 APIs ,讓你控制要如何在 3D 空間中移動,最後再產生出合適的 Matrix ,讓你套用到 Canvas
的座標體系上。關於 Matrix,我在 幫圖片加上影像特效 (I) - 陰影特效 已經介紹過他的強大,還不知道的,先讀一下這篇。
用個例子來解釋這個 Camera 類別的用法,是最適當的。底下這個簡單的程式片段的結果,就是最上面那張圖。其中的 m_bmp 就是原本的美女圖。
1. camera = new Camera();
2. camera.translate(0, 0, 50);
3. camera.rotateY(30);
4. Matrix matrix3D = new Matrix();
5. camera.getMatrix(matrix3D);
6.
7. canvas.save();
8. canvas.translate(100, 100);
9. canvas.concat(matrix3D);
10.
11. canvas.drawBitmap(m_bmp, 0, 0, null);
12. canvas.restore();
camera = new Camera(); camera.translate(0, 0, 50); camera.rotateY(30);
Matrix matrix3D = new Matrix(); camera.getMatrix(matrix3D);
canvas.save(); canvas.translate(100, 100); canvas.concat(matrix3D);
canvas.drawBitmap(m_bmp, 0, 0, null); canvas.restore();
從這個範例程式中,我們知道,你可以利用 Camera.translate() 及 Camera.rotateXXX() 等 APIs 在 3D
空間中移動。其實,這些 APIs 就是在操作 Matrix 的內容。最後,你只要呼叫 Camera.getMatrix() 即可將這
Matrix 的內容抓出,並套到 Canvas 上。
在 Android ,要做出 3D 的效果,你當然可以用 OpenGL 的函式。不過,如果你需要更快的顯示速度,或者只是要做個簡單的 3D 特效,那千萬不要忘了這個 android.graphics.Camera。
评论
我在做相机开发,想设置其焦距
这是我从网上找到关于焦距设置的方案
就是手机上有个应用!它是可以实现变焦的!但是,我的应用不行;
Camera.getParameters().isZoomSupported() -->true
Camera.getParameters().isSmoothZoomSupported() -->false
这种情况下,我怎么才能实现变焦呢??
我有两个手机:
A.moto me1 ZoomSupported和SmoothZoom都是支持的,我测试了,可以实现变焦!
B.HTC G8就是上面这种情况,ZoomSupported支持,SmoothZoom不支持,所以调用:Camera.startSmoothZoom(zoom)就没反应了,但是它手机上带了一个拍照程序,有变焦功能,说明SmoothZoom不支持的情况下应该也是可以实现变焦功能的!
我尝试了,使用
Camera.getParameters().setZoom(zoom);
或者:
Camera.Parameters localParameters = mCamera.getParameters();
mCamera.getParameters().set("taking-picture-zoom", zoom);
localParameters.set("taking-picture-zoom", zoom);
都没反应!
是不是改变了zoom后,还需要是操作???
另外我将,HTC自带的拍照程序反编译了一下,它代码里,没有发现调用过:
Camera.startSmoothZoom(zoom);
但是有发现,调用过:
Camera.Parameters localParameters = mCamera.getParameters();
mCamera.getParameters().set("taking-picture-zoom", zoom);
localParameters.set("taking-picture-zoom", zoom);
还有就是发现它用了一个.so的动态链接库!
还有,Camera360这款软件,也实现了变焦!
不知道他们是怎么实现的!!???
发表评论
-
APN(default、mms、supl、dun、hipri接入点类型的区别)
2013-10-10 19:31 45874设置APN上网时,大家可能经常遇到这个问题:为什么有时要填写 ... -
AMR音频编码器概述及文件格式分析
2013-10-10 19:29 3958全称Adaptive Multi-Rate,自适应多速率编码 ... -
pad 强制加载 Hdpi资源 (2.3 dpi < 240)
2012-07-16 16:47 0pad 强制加载 Hdpi资源 (2.3 dpi < ... -
android 设计模式-享元模式
2011-12-16 23:01 2195享元(FlyWeight)模式,原意是“轻量级”模式,它用来解 ... -
statusbar 2.3
2011-11-08 16:04 1285以前我的文章分析过Stat ... -
android 输入法默认设置
2011-07-07 14:00 7198设置默认输入法 在 frameworks\base\co ... -
Android Media Scanner Process
2011-06-06 22:58 3410下面是系统图 Medi ... -
handler与多线程消息处理
2011-06-04 13:42 8284在Android下面也有多线程的概念,在C/C++中,子线程可 ... -
android light
2011-03-24 16:15 3415背光设置是在:设置->声音和显示->亮度,通过进度 ... -
PowerManagerService sensor
2011-03-22 20:06 2673默认分类 2010-12-24 14:34:55 阅读144 ... -
android 单例
2011-02-15 09:26 42301. Framework层的代码: A ... -
Android 开发之 Services 服务
2010-11-02 18:21 4244Service Service ... -
深入学习android之AlarmManager
2010-11-01 16:50 34768对应AlarmManage有一个Alarm ... -
eclipse+android+ddms+adt
2010-09-14 10:30 8460用eclipse + ADT作为android ... -
Menus
2010-09-05 19:01 1791Android Menus 文章分类:移动开发 1.O ... -
Android开机自启动应用开发
2010-08-28 10:07 4594目前需要开发一个开机自启动的GTD应用程序来提醒用户的 ... -
Android2.1_Launcher学习笔记
2010-08-11 13:40 3879文章分类:移动开发 好么,2.0的源码没看几天,2.1的 ... -
Browsing Android Source in Eclipse
2010-08-09 16:00 3439Google’s Android SDK includes ... -
android 编译
2010-08-07 16:31 25351 我的系统是Ubuntu 8.04 * 2 系统上 ... -
Ubuntu linux 右键添加"以管理员身份打开","在终端中打开"
2010-08-02 15:04 4662Ubuntu linux 右键添加"以管理员身份打开 ...
相关推荐
第二个应用于手机硬件中的相机相关的操作,本文讲述的是利用第一个Camera类实现中轴3D转换的卡牌翻转效果,开始之前,先看一下Android系统中的坐标系: 对应于三维坐标系中的三个方向,Camera提供了三种旋转方法: ...
在Android中,我们可以使用`android.view.animation`包下的`RotateAnimation`类来创建2D旋转动画,但若要实现3D旋转,则需要利用到`android.graphics.Matrix`类和`Camera`类。 `Matrix`类是Android图形系统的基础,...
10.1 Understanding 3D Graphics.... 198 10.2 Introducing OpenGL..... 199 10.3 Building an OpenGL Program...200 10.4 Rendering the Scene..... 202 10.5 Building a Model..... . . 206 10.6 Lights, ...
在Android平台上,开发人员可以利用Android的Graphics子系统来实现丰富的图形效果,其中包括对3D对象的旋转。本文将深入探讨如何使用`Camera`类在Android应用中执行3D旋转,以此来创建动态且引人入胜的用户界面。 `...
本实例中的"android 立方体旋转效果"利用了Android的`android.graphics.Camera`类来实现,这是一个用于处理2D到3D转换的核心类。下面我们将详细探讨如何使用这个类来创建立方体旋转动画。 首先,`android.graphics....
* Advanced development topics including security, IPC, advanced 2D / 3D graphics techniques, and user–hardware interaction. Who this book is for This book is for anyone interested in creating ...
在Android平台上,开发游戏或3D应用时,我们经常需要导入和处理3D模型。OBJ文件是一种常见的3D模型格式,由Wavefront公司开发,它包含几何数据、纹理坐标和法线信息。LibGDX是一个强大的跨平台游戏开发框架,支持...
Extensive Media Support and 2D/3D Graphics 8 Optimized Memory and Process Management 8 Introducing the Open Handset Alliance 8 What Does Android Run On? 9 Why Develop for Android? 9 What Will ...
- **Optimized Graphics**:包括2D图形库和基于OpenGL ES的3D实现。 - **SQLite**:用于数据存储的数据库系统。 - **Media Support**:支持多种音频、视频和图像格式(如MPEG4、MP3、AAC、AMR、JPG、PNG、GIF)。...
AndroidJavaClass unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = unityPlayerClass.GetStatic("currentActivity"); // 调用Android Java类...
相机(Camera)实现3D效果源码,android.graphics.Camera 实现简单的3D效果,其实这个代码,是原来学习的时候搜到的不过都老早了忘记是哪里的了。顺便在里面加了些注释 。看着效果图 对照代码 就特别明了了,各种组合...
OpenGL 3D引擎是Android GUI系统中另一个关键组件,它为开发者提供了强大的3D图形渲染能力。OpenGL ES API(通过`javax.microedition.khronos.opengles`包提供)使得开发者能够在Android平台上构建复杂的3D场景和...
----------------------------...• 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES 1.0 (硬件加速可选) • SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...
1. **OpenGL ES**:OpenGL(Open Graphics Library)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL ES是其针对嵌入式系统的精简版本,广泛应用于移动设备,如Android手机和平板。 2....
Android通过OpenGL ES (Open Graphics Library for Embedded Systems)支持3D图形的绘制。 - **实现**:在Java层,通过`javax.microedition.khronos.opengles`包提供OpenGL ES的API,这些API最终通过JNI调用底层...
这种动画通常通过视图的3D变换来实现,涉及到Android的`android.view.animation`和`android.graphics`包中的类。主要用到的类有`CardFlipAnimation`和`Camera`,它们共同协作创建出卡片翻转的效果。`...
- **3D转换**:使用`android.graphics.Camera`类进行3D转换,可以使视图具有更真实的立体感。通过调整相机的位置和角度,可以实现不同视角的翻转效果。 - **性能优化**:由于自定义动画可能会对性能产生影响,...