android com.panoramagl应用示例,增加俯仰视角控制
来源:互联网 发布:中国火炮技术 知乎 编辑:程序博客网 时间:2024/05/01 05:13
官方例子:http://code.google.com/p/panoramagl-android/downloads/list
package com.shaoming.pano1;import java.util.Random;import javax.microedition.khronos.opengles.GL10;import com.panoramagl.PLCubicPanorama;import com.panoramagl.PLCylindricalPanorama;import com.panoramagl.PLILoader;import com.panoramagl.PLIPanorama;import com.panoramagl.PLIView;import com.panoramagl.PLImage;import com.panoramagl.PLJSONLoader;import com.panoramagl.PLSpherical2Panorama;import com.panoramagl.PLSphericalPanorama;import com.panoramagl.PLView;import com.panoramagl.PLViewEventListener;import com.panoramagl.enumeration.PLCubeFaceOrientation;import com.panoramagl.hotspots.PLHotspot;import com.panoramagl.ios.structs.CGPoint;import com.panoramagl.structs.PLPosition;import com.panoramagl.utils.PLUtils;import android.os.Bundle;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.Spinner;import android.widget.Toast;import android.widget.ZoomControls;import android.widget.AdapterView.OnItemSelectedListener;import android.view.View.OnClickListener;public class PanoramaActivity extends PLView{/**constants*/private static final int kHotspotIdMin = 1;private static final int kHotspotIdMax = 1000;/**member variables*/private Random random = new Random();/**init methods*/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.loadPanorama(0); this.setListener(new PLViewEventListener() { @Override public void onDidClickHotspot(PLIView pView, PLHotspot hotspot, CGPoint screenPoint, PLPosition scene3DPoint) { Toast.makeText(pView.getActivity(), String.format("You select the hotspot with ID %d", hotspot.getIdentifier()), Toast.LENGTH_SHORT).show(); }}); }/** * This event is fired when OpenGL renderer was created * @param gl Current OpenGL context */ @Overrideprotected void onGLContextCreated(GL10 gl){ super.onGLContextCreated(gl); //Add layout View mainView = this.getLayoutInflater().inflate(R.layout.panorama_layout, null); this.addContentView(mainView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); //重要 官方这里没有给出使用示例 控制垂直方向观看角度 默认为getCamera().setPitchRange(-90,90); //可设定getCamera().setPitchRange(-30,30);等有一定仰俯视角度的观看效果 这里设置为上下不可滑动 getCamera().setPitchRange(0,0); Button backButton = (Button)mainView.findViewById(R.id.panorama_back); backButton.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){// TODO Auto-generated method stub}}); //Zoom controls 缩放控制 ZoomControls zoomControls = (ZoomControls)mainView.findViewById(R.id.zoomControls); zoomControls.setOnZoomInClickListener(new OnClickListener() {@Overridepublic void onClick(View view){getCamera().zoomIn(true);}}); zoomControls.setOnZoomOutClickListener(new OnClickListener() {@Overridepublic void onClick(View view){getCamera().zoomOut(true);}});} /**load methods*/ /** * Load panorama image manually * @param index Spinner position where 0 = spherical, 1 = spherical2, 2 = cubic, 3 = cylindrical */ private void loadPanorama(int index) { GL10 gl = this.getCurrentGL(); PLIPanorama panorama = null; //Lock panoramic view this.setBlocked(true); //Spherical panorama example (supports up 1024x512 texture) 球体全景例子 1024*512贴图 if(index == 0) { //gl.glRotatef(90.0f, 0.0f, 1.0f, 0.0f); panorama = new PLSphericalPanorama(); ((PLSphericalPanorama)panorama).setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_sphere), false)); } //Spherical2 panorama example (only support 2048x1024 texture) 球体全景例子 2048*1024贴图 /* else if(index == 1) { panorama = new PLSpherical2Panorama(); ((PLSpherical2Panorama)panorama).setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_sphere2), false)); } //Cubic panorama example (supports up 1024x1024 texture per face) 立方体全景例子 需每个面的贴图都是1024*1024 else if(index == 2) { PLCubicPanorama cubicPanorama = new PLCubicPanorama(); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_f), false), PLCubeFaceOrientation.PLCubeFaceOrientationFront); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_b), false), PLCubeFaceOrientation.PLCubeFaceOrientationBack); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_l), false), PLCubeFaceOrientation.PLCubeFaceOrientationLeft); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_r), false), PLCubeFaceOrientation.PLCubeFaceOrientationRight); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_u), false), PLCubeFaceOrientation.PLCubeFaceOrientationUp); cubicPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_d), false), PLCubeFaceOrientation.PLCubeFaceOrientationDown); panorama = cubicPanorama; }*/ //Cylindrical panorama example (supports up 1024x1024 texture) 柱形全景例子 需提供1024*1024贴图 else if(index == 3) { PLCylindricalPanorama cylindricalPanorama = new PLCylindricalPanorama(); cylindricalPanorama.setHeightCalculated(false); cylindricalPanorama.getCamera().setPitchRange(0.0f, 0.0f); cylindricalPanorama.setImage(gl, PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_sphere3333), false)); panorama = cylindricalPanorama; } //Add a hotspot 添加热点 // panorama.addHotspot(new PLHotspot((kHotspotIdMin + Math.abs(random.nextInt()) % ((kHotspotIdMax + 1) - kHotspotIdMin)), PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.hotspot), false), 0.0f, 0.0f, 0.08f, 0.08f)); //Load panorama this.reset(); this.setPanorama(panorama); //Unlock panoramic view this.setBlocked(false); }}
//重要 官方这里没有给出使用示例 控制垂直方向观看角度
getCamera().setPitchRange(0,0);
- android com.panoramagl应用示例,增加俯仰视角控制
- Android应用--简、美音乐播放器增加音量控制
- Android 360全景开发(PanoramaGL)
- OpenGL视角控制
- Android Socket 应用示例
- android 系统增加linux应用
- COM原理及应用---- ActiveX控制
- KZ笔记2:视角控制
- 控制摄像机移动和视角
- 树控制的应用技巧示例
- Android 应用版本控制
- Android OpenGL相机视角
- Android应用本地化--增加简体中文支持
- Android应用界面增加退出提示框
- 为Android SDK增加应用案例实现
- android 增加自己的应用签名校验
- android 如果增加应用的内存
- android 增加自己的应用签名校验
- VS2008快捷键大全(有空整理更新的版本)
- 使用js压缩成min的
- H264(NAL简介与I帧判断)
- list集合去重
- 大型app开发,推荐三层架构,而不是简单的MVC
- android com.panoramagl应用示例,增加俯仰视角控制
- js弹出层
- C++ map的基本操作和使用
- java io 随笔1
- JavaScript的调试方法(IE)
- PHP笔记(函数)
- #01 Linear Regression Excise
- oracle视图基本操作
- Android ListView长按创建上下文菜单