android com.panoramagl应用示例,增加俯仰视角控制
2013-04-12 16:10
267 查看
官方例子:http://code.google.com/p/panoramagl-android/downloads/list
//重要 官方这里没有给出使用示例 控制垂直方向观看角度
getCamera().setPitchRange(0,0);
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 */ @Override protected 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() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); //Zoom controls 缩放控制 ZoomControls zoomControls = (ZoomControls)mainView.findViewById(R.id.zoomControls); zoomControls.setOnZoomInClickListener(new OnClickListener() { @Override public void onClick(View view) { getCamera().zoomIn(true); } }); zoomControls.setOnZoomOutClickListener(new OnClickListener() { @Override public 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应用--简、美音乐播放器增加音量控制
- Android应用--简、美音乐播放器增加音量控制
- 移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
- Android开发——Fragment简单示例(二)制作一个应用菜单导航栏
- android应用开发揭秘第13章01示例,移动图像,opengl绘制星星问题解决!
- Android开源框架Glide的使用-示例应用
- Android之RxAndroid2、RxJava2的zip应用场景及示例
- android中贝塞尔曲线的应用示例
- Android中类的反射的两个应用示例
- android打开应用软件盘的控制,窗口和软件盘的交互
- Android 为应用增加可移动的悬浮窗口
- 【x264】x264源码分析与应用示例——码率控制
- Android应用开发中使用GridView网格布局的代码示例
- 在为应用集成微博第三方登录获取用户信息的时候出现异常com.weibo.sdk.android.WeiboException: {"error":"User does not exists!","er
- android开发之为activity增加左右手势识别示例
- CSS文字控制与文本控制属性介绍及应用示例
- Android应用视觉效果设计技巧(转载http://www.cnblogs.com/hanyonglu/archive/2012/03/02/2376451.html)
- Android的AsyncTask简介与示例应用
- 为Android应用增加渠道信息 自动化不同渠道的打包过程
- 友善之臂4412开发板android应用层通过jni直接控制除LED、蜂鸣器外的其它IO口,系统直接重启问题