介绍
本指南将介绍一个PanoramaGL 0.1类库的简单用法,更多的细节请签出 示例查看。
细节
1如何导入PanoramaGL类库?
1.1从源代码中导入
(1)下载PanoramaGL_0.1.zip或从代码仓库下载源代码
(2)如果你下载zip文件然后解压该文件 (3)在Eclipse中导入PanoramaGL项目: 点击“File”选择“Import”菜单; 选择“General”目录中的“Existing Projects into Workspace”,点击“Next”按钮; 点击“Browse”按钮,选择PanoramaGL项目文件夹 点击“Finish”按钮。 (4)右键单击你的项目并选择“Properties”选项 (5)选择左侧面板“Android”选项 (6)找到右侧面板“Library”部分,点击“Add...”按钮 (7)选择“PanoramaGL”类库,点击“OK”按钮 (8)在属性窗口的右下角选择“OK”按钮表示接受更改1.2从编译后的文件中导入
(1)下载libglues.zip
(2)解压zip文件并复制到你的项目的“libs”文件夹中 (3)下载PanoramaGL 0.1.jar (4)复制jar文件到你的项目的“libs”文件夹中 (5)在你的项目中导入jar文件: 右键单击你的项目并选择“Properties”选项; 选择左侧面板“Java Build Path”选项; 选择“Libraries”选项卡; 点击“Add JARs”按钮; 在你的项目中选择“libs/PanoramaGL_0.1.jar”文件; 点击“OK”按钮; 在属性窗口的右下角选择“OK”按钮表示接受更改。2在应用程序中如何使用PanoramaGL?
(1)如前面描述那样导入类库
(2)在“res/raw”文件夹中导入一个球面图像(如:pano_sphere.jpg) (3)在Activity中,你需要构建一个全景图像的查看器,具体做法如下: 继承PLView类public class YourActivity extends PLView
在onCreate()方法中加载全景图像
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PLSphericalPanorama panorama = new PLSphericalPanorama(); panorama.setImage(this.getCurrentGL(), PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_sphere))); this.setPanorama(panorama);}
注意:如果有必要的话,你也可以从其他方法中加载全景图像或事件。
3简单JSON协议
同样,你可以使用JSON协议加载全景图像。
注意:在该版本中,JSON协议被限制只处理本地文件。3.1源代码
this.load(new PLJSONLoader(this, "res://raw/json_spherical"));
注意:在我的应用程序的“res/raw”文件夹中有一个名为“json_spherical.data”的文件,可以使用这段代码加载。或
this.load(new PLJSONLoader(this, "file:///sdcard/files/json_spherical.data"));
注意:在Android设备的“/sdcard/files”文件夹中有一个名为“json_spherical.data”的文件,可以使用这段代码加载。
3.2JSON协议
{ "urlBase": "file:///sdcard/files", //URL base where the files are //The options are res:// for application resources and file:// for file system (this feature will be improved to support the http protocol) "type": "spherical", //Panorama type: [spherical, spherical2, cubic, cylindrical] "sensorialRotation": false, //Automatic rotation using sensors [true, false]"scrolling": //Scrolling section { "enabled": false //Enable scrolling feature [true, false] }, "inertia": //Inertia section { "enabled": false, //Enable inertia feature [true, false] "interval": 3 //Inertia's interval in seconds }, "accelerometer": //Accelerometer section { "enabled": false, //Enable the accelerometer feature [true, false] "interval": 0.033, //Update interval of accelerometer (this value must be calculated as 1/frequency) "sensitivity": 10.0, //Sensitivity of the accelerometer "leftRightEnabled": true, //Enable the direction of movement with the accelerometer (left/right) "upDownEnabled": false //Enable the direction of movement with the accelerometer (up/down) }, "images": //Panoramic images section //A property can be a name e.g. preview.jpg, preview or URL e.g. file:///sdcard/files/preview.jpg, res://raw/preview //if a property only have a name, the real path will be the urlBase + image name { "preview": "preview.jpg", //Preview image name or URL (this option will be used with http protocol) "image": "pano.jpg" //Panoramic image name or URL for spherical, spherical2 and cylindrical panoramas "front": "front.jpg", //Front image name or URL for cubic panorama (only use with cubic panorama) "back": "back.jpg", //Back image name or URL for cubic panorama (only use with cubic panorama) "left": "left.jpg", //Left image name or URL for cubic panorama (only use with cubic panorama) "right": "right.jpg", //Right image name or URL for cubic panorama (only use with cubic panorama) "up": "up.jpg", //Up image name or URL for cubic panorama (only use with cubic panorama) "down": "down.jpg" //Down image name or URL for cubic panorama (only use with cubic panorama) }, "camera": //Camera settings section { "vlookat": 0, //Initial vertical position [-90, 90] "hlookat": 0, //Initial horizontal position [-180, 180] "atvmin": -90, //Min vertical position [-90, 90] "atvmax": 90, //Max vertical position [-90, 90] "athmin": -180, //Min horizontal position [-180, 180] "athmax": 180 //Max horizontal position [-180, 180] }, "hotspots": [ //Hotspots section (this section is an array of hotspots) { "id": 1, //Hotspot identifier (long) "atv": 0, //Vertical position [-90, 90] "ath": 0, //Horizontal position [-180, 180] "width": 0.08, //Width "height": 0.08, //Height "image": "hotspot.png" //Image name or URL } ]}
3.3看到
PLJSONLoader类和PLView加载方法。
json_spherical.data、json_spherical2、json_cylindrical.data和json_cubic.data都位于 示例的“res/raw”文件夹中。4更多信息
想获得更多信息,请签出示例,该示例运行在Android2.x或以上版本。
5效果图