Android 360度全景图功能

news/2024/7/24 3:22:36 标签: android

方法一: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.GLPanorama
    android: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;

    @Override
    protected 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.VrPanoramaView
            android: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 {
        @Override
        public void onLoadSuccess() {//图片加载成功
        }
 
 
        @Override
        public void onLoadError(String errorMessage) {//图片加载失败
        }
 
        @Override
        public void onClick() {//当我们点击了VrPanoramaView 时候触发            super.onClick();
        }
 
        @Override
        public void onDisplayModeChanged(int newDisplayMode) {
            super.onDisplayModeChanged(newDisplayMode);
        }
    }


http://www.niftyadmin.cn/n/5466896.html

相关文章

QT网络调试助手

QT网络调试助手 1.开发流程 2.QTtcp服务器   1.1 服务端数据读取   1.2 服务端发送数据-所有客户端   1.3 服务端自动刷新ip地址   1.4 服务端检测客户端断开状态   1.5 服务端发送数据-指定特定客户端发送数据   1.6 服务端停止监听和断开 3.QTtcp客户端 1…

自动化运维(二)Centos7 安装Ansible和Ansible AWX

一、基础准备 安装Ansible和Ansible AWX所需要的硬件没有硬性规定&#xff0c;它的需求很大程度上取决于你打算如何使用它&#xff0c;例如管理的节点数量、执行的任务复杂性、并发作业的数量等。我们基于社区的经验和一般的最佳实践&#xff0c;可以给出一些基本的硬件配置建…

Python-VBA编程500例-029(入门级)

连续字符段索引(Index of Consecutive Character Segments)在实际应用中具有多种场景。常见的应用场景有&#xff1a; 1、文本分析&#xff1a;在文本处理和分析中&#xff0c;连续字符段索引可以用于识别重复的字符序列或模式。这些模式可能对于理解文本的结构、风格或特定含…

armbian等linux系统修改fstab实现开机自动挂载磁盘(详解)

当 Linux 操作系统启动时&#xff0c;它会尝试挂载您的硬盘和其他存储设备上的分区。为了实现这一目标&#xff0c;系统使用 /etc/fstab 文件来确定应该如何挂载文件系统。/etc/fstab 文件是一个文本文件&#xff0c;包含了在系统引导期间将要挂载的所有文件系统的定义。它通过…

C#让标题栏闪烁着动起来的方法

目录 1.API函数FlashWindow &#xff08;1&#xff09;添加命名空间 &#xff08;2&#xff09;声明DllImport方法 &#xff08;3&#xff09;FlashWindow函数 2.P/Invoke 3.再来一个示例 在Windows系统中&#xff0c;当程序在后台运行时&#xff0c;如果某个窗体的提示信…

【MATLAB源码-第29期】基于matlab的MIMO,MISO,SIMO,SISO瑞利rayleigh信道容量对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. SISO&#xff08;单输入单输出&#xff09;&#xff1a; - SISO 是指在通信系统中&#xff0c;只有一个天线用于传输信号&#xff0c;也只有一个天线用于接收信号的情况。这是最简单的通信方式。 2. SIMO&#xff08;单…

nslookup查询网站是否支持IPV6

nslookup是一种网络管理命令行工具&#xff0c;可用于查询DNS域名和IP地址输入指令nslookup默认服务器和Address是当前上网所用的DNS服务器域名和地址A记录A&#xff08;Address&#xff09;记录指的是用来指定主机名或域名对应的IP记录。

从C到C++过渡知识 下(深入理解引用与指针的关系)

引用 引用时C引入的一个新的概念&#xff0c;他和指针有着千丝万缕的关系。 首先我们要了解的是引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。语法格式如下…