Android 360度全景图功能

方法一:OpenGL ES

1.在build.gradle文件中添加依赖

allprojects {repositories {maven { url 'https://jitpack.io' }}
}

高版本AS中settings.gradle.kts:

dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()maven { url = uri("https://jitpack.io") }}
}

2.添加库依赖

compile 'com.github.CN-ZPH:weibo360panorama:v1.0.1'

高版本AS中:

implementation("com.github.CN-ZPH:weibo360panorama:v1.0.1")

3.添加布局文件

<com.zph.glpanorama.GLPanoramaandroid:id="@+id/mGLPanorama"android:layout_width="match_parent"android:layout_height="match_parent">
</com.zph.glpanorama.GLPanorama>

4.传入你的全景图

public class Main2Activity extends AppCompatActivity {private GLPanorama mGLPanorama;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);//初始化全景控件mGLPanorama= (GLPanorama) findViewById(R.id.mGLPanorama);mGLPanorama.setGLPanorama(R.drawable.bbb);}
}

示例如下:

方法二:Google VR

1.添加依赖

目前GitHub上最新版本号为1.8.0,我这里也用最新的了。 
最低支持到 minSdkVersion 19 也就是Android 4.4.0 
在 build.gradle 文件中添加库依赖:

    dependencies {compile 'com.google.vr:sdk-panowidget:1.80.0'}

2.创建布局

 <com.google.vr.sdk.widgets.pano.VrPanoramaViewandroid:id="@+id/mVrPanoramaView"android:layout_width="match_parent"android:layout_height="250dip"/>

3.AndroidManifest中添加权限

 <!-- These permissions are used by Google VR SDK to get the best Google VR headset profiles. !--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />//因为全景图较大,所以在application下申请更多空间,但是作为一个有节操的码农建议你不要这么干。<application   android:largeHeap="true"   </application>

4.Activity中初始化组件

//初始化VR图片private void initVrPaNormalView() {mVrPanoramaView = (VrPanoramaView) findViewById(R.id.mVrPanoramaView);VrPanoramaView.Options paNormalOptions = new VrPanoramaView.Options();paNormalOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
//      mVrPanoramaView.setFullscreenButtonEnabled (false); //隐藏全屏模式按钮mVrPanoramaView.setInfoButtonEnabled(false); //设置隐藏最左边信息的按钮mVrPanoramaView.setStereoModeButtonEnabled(false); //设置隐藏立体模型的按钮mVrPanoramaView.setEventListener(new ActivityEventListener()); //设置监听//加载本地的图片源mVrPanoramaView.loadImageFromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.andes), paNormalOptions);//设置网络图片源
//        panoWidgetView.loadImageFromByteArray();}private class ActivityEventListener extends VrPanoramaEventListener {@Overridepublic void onLoadSuccess() {//图片加载成功}@Overridepublic void onLoadError(String errorMessage) {//图片加载失败}@Overridepublic void onClick() {//当我们点击了VrPanoramaView 时候触发            super.onClick();}@Overridepublic void onDisplayModeChanged(int newDisplayMode) {super.onDisplayModeChanged(newDisplayMode);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587762.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spark shuffle 补充概念

spark shuffle 我们在前面的文章说过&#xff0c;所谓shuffle&#xff0c;就是spark RDD的一种宽依赖关系&#xff0c;父RDD的数据会发送给多个子RDD spark中Map和Reduce概念 在Shuffle过程中.提供数据的称之为Map端(Shuffle Write)接收数据的称之为Reduce端(Shuffle Read)&…

数据结构进阶篇 之【选择排序】详细讲解(选择排序,堆排序)

民以食为天&#xff0c;我以乐为先 嘴上来的嘘寒问暖&#xff0c;不如直接打笔巨款 一、选择排序 1.直接选择排序 1.1 基本思想 1.2 实现原理 1.3 代码实现 1.4 直接选择排序的特性总结 2.堆排序 跳转链接&#xff1a;数据结构 之 堆的应用 二、完结撒❀ –❀–❀–❀…

美摄科技AI智能图像矫正解决方案

图像已经成为了企业传播信息、展示产品的重要媒介&#xff0c;在日常拍摄过程中&#xff0c;由于摄影技巧的限制和拍摄环境的复杂多变&#xff0c;许多企业面临着图像内容倾斜、构图效果不佳等挑战&#xff0c;这无疑给企业的形象展示和信息传递带来了不小的困扰。 美摄科技深…

SF授权系统源码 全开源无加密5.2版本

预览 介绍 SF多应用综合验证系统是一款基于 ThinkPHP V6.0.9 和 EasyWeb iframe开发的系统&#xff0c;帮助开发者快速为自己的项目增加授权验证。傻瓜式一键安装系统&#xff0c;轻松几步即可完成软件对接&#xff0c;为软件提供用户注册登陆、软件收费授权、软件更新、等一系…

中国Shokz韶音 小小耳机中的大国创新

近日下午&#xff0c;太空出差三人组直播课上新了&#xff01;全球的学生们通过网络收看了“天宫课堂”第二课&#xff0c;航天员翟志刚、王亚平、叶光富相互配合&#xff0c;在微重力环境下做了大量演示&#xff0c;并进行了天地互动问答。 眼尖的朋友应该看出来了&#xff0c…

磁盘如何分配数据数据

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 磁盘如何分配数据 数据切割&#xff1a; 按照固定长度进行切割---》编码翻译&#xff08;常用&#xff09; 计算机要求按照8bit(字节)进…

vscode连接服务器步骤

一 、下载vscode 下载vscode 在官网&#xff08;https://code.visualstudio.com/&#xff09;下载VsCode安装vscode 放到自己想安装的盘&#xff0c;最好不要C盘安装中文插件 安装完成后后下角会有提示说重启&#xff0c;点击重启就行。 4. 设置自动保存 点击右上角的文件—…

VMware-16.0配置虚拟机网络模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、为什么要配置网络&#xff1f;二、配置步骤1.检查VMware服务2.进入配置页面3.添加网络模式1.Bridge2.NAT3.Host-only 4.DHCP租约5.静态IP 三、使用总结 前言…

Flutter应用发布前的关键iOS设备测试策略

本文探讨了使用Flutter开发的iOS应用能否上架&#xff0c;以及上架的具体流程。苹果提供了App Store作为正式上架渠道&#xff0c;同时也有TestFlight供开发者进行内测。合规并通过审核后&#xff0c;Flutter应用可以顺利上架。但上架过程可能存在一些挑战&#xff0c;因此可能…

Java解析实体类的属性和属性注释

前言 获取某个类的属性&#xff08;字段&#xff09;是我们经常都会碰到的&#xff0c;通常我们是通过反射来获取的。 但是有些特殊情况下&#xff0c;我们不仅要获取类的属性&#xff0c;还需要获取属性注释。这种情况下&#xff0c;我们只能通过注解去获取注释。可以自己定…

系列学习前端之第 8 章:一文掌握 Vue2(核心基础篇)

1、 Vue简介 1.1 简介 Vue 是动态构建用户界面的渐进式 JavaScript 框架&#xff0c;Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。采用组件化模式&#xff0c;提高代码复用率、且让代码更好维护。借鉴 Angular 的模板和数据绑定技术声明式编码&#xff0c;让编…

大话设计模式之抽象工厂模式

抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种方式来创建一系列相关或依赖对象的家族&#xff0c;而无需指定其具体类。该模式通过提供一个抽象工厂接口&#xff0c;定义了一组可以创建不同类型对象的方法&#…