android开发全景图实现

释放双眼,带上耳机,听听看~!

android全景图

使用谷歌ARsdk开发

官网:https://developers.google.cn/vr/

参考项目:

github:https://github.com/sfsheng0322/DroidVR

配置:

compile ‘com.google.vr:sdk-panowidget:1.80.0’

代码:



public class MainActivityAR extends AppCompatActivity {

    public VrPanoramaView vrPanoramaView;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main_ar);

        initView();

    }

    private void initView() {

        vrPanoramaView = findViewById(R.id.vrPanoramaView);        vrPanoramaView.setTouchTrackingEnabled(true);

        //是否显示全屏按钮

        vrPanoramaView.setFullscreenButtonEnabled(true);

        //是否显示信息的按钮

        vrPanoramaView.setInfoButtonEnabled(false);

        //是否显示立体模型的按钮

        vrPanoramaView.setStereoModeButtonEnabled(false);

String info ="http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g4/M08/06/05/Cg-4WVQX91mIDDPnAAyiLvbF_hwAARgNQG3evYADKJG713.jpg?downfile=1529646566493.jpg";

Glide.with(this).load(R.mipmap.a1).asBitmap().into(new SimpleTarget() {

@Override

      public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {  loadPanoramaImage(bitmap);

    }

});

    vrPanoramaView.setEventListener(new VrPanoramaEventListener() {

//点击

        @Override

      public void onClick() {

super.onClick();

            Toast.makeText(MainActivityAR.this, "onClick", Toast.LENGTH_SHORT).show();

      }

//模式发生改变

    @Override

    public void onDisplayModeChanged(int newDisplayMode) {

super.onDisplayModeChanged(newDisplayMode);

        Toast.makeText(MainActivityAR.this, "onDisplayModeChanged", Toast.LENGTH_SHORT).show();

    }

//加载错误

    @Override

    public void onLoadError(String errorMessage) {

super.onLoadError(errorMessage);

        Toast.makeText(MainActivityAR.this, "onLoadError", Toast.LENGTH_SHORT).show();

    }

//加载成功(模式发生改变后,图片重新加载,加载成功后依旧触发)

    @Override

    public void onLoadSuccess() {

super.onLoadSuccess();

        Toast.makeText(MainActivityAR.this, "onLoadSuccess", Toast.LENGTH_SHORT).show();

    }

});

    }

    /**

    * 加载全景图

    */

    private void loadPanoramaImage(Bitmap bitmap) {

        if (bitmap == null) {

            return;

        }

        VrPanoramaView.Options options = new VrPanoramaView.Options();

        options.inputType = VrPanoramaView.Options.TYPE_MONO;

        vrPanoramaView.loadImageFromBitmap(bitmap, options);

    }

    /**

    * 把文件转换为bitmap

    **/

    private Bitmap getBitmapFromAssets(String fileName) {

        if (TextUtils.isEmpty(fileName)) {

            return null;

        }

        try {

            //根据名字打开Assets中的图片

            InputStream inputStream = getAssets().open(fileName);

            return BitmapFactory.decodeStream(inputStream);

        } catch (IOException e) {

            e.printStackTrace();

        }

        return null;

    }

    @Override

    protected void onResume() {

        super.onResume();

        vrPanoramaView.resumeRendering();

    }

    @Override

    protected void onPause() {

        super.onPause();

        vrPanoramaView.pauseRendering();

    }

    @Override

    protected void onDestroy() {

        vrPanoramaView.shutdown();

        super.onDestroy();

    }

}

 

布局:

<?xml version="1.0" encoding="utf-8"?>

<merge xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:id="@+id/coordinatorLayout"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <android.support.percent.PercentRelativeLayout

        android:id="@+id/prl_image"

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

        <com.google.vr.sdk.widgets.pano.VrPanoramaView

            android:id="@+id/vrPanoramaView"

            android:layout_width="match_parent"

            android:layout_height="0dp"

            app:layout_aspectRatio="178%"

            app:layout_widthPercent="100%" />

    </android.support.percent.PercentRelativeLayout>

    <ImageView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        android:src="https://www.jianshu.com/p/d05ffe440b03/@mipmap/o9" />

</merge>

 

效果:

 

 

人已赞赏
Android文章

Android Layout ID Converter(Android布局ID转换器)(Android studio 插件)

2020-1-28 16:21:27

Android文章

Android Studio删除项目和工作

2020-1-28 16:25:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索