Android图片处理--全景查看效果

PS:Android对于图片处理这块资源还是挺多的,之前用OpenGL制作图片的全景效果,耗时耗力,而且只能点击进去后看到,但是效果是非常的号,今天所写的是编写好的一个图片控件,只要拿来用就可以了。效果不是那么好,处理的之后就是一张图片截取中间部分放大再显示在屏幕中间,通过摆动手机查看被遮挡部分,如图:一开始图片是这样的

1:添加依赖

//全景图片
    compile 'com.gjiazhe:PanoramaImageView:1.0'

2:使用控件

<com.gjiazhe.panoramaimageview.PanoramaImageView
        android:id="@+id/panorama_image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/timg"
        app:piv_enablePanoramaMode="true"
        app:piv_show_scrollbar="true"
        app:piv_invertScrollDirection="false" />

布局的根目录一定要加上

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

这里面有三个属性(其中三个)

一个是app:piv_enablePanoramaMode,使用全景效果模式,app:piv_show_scrollbar滚动条显示,app:piv_invertScrollDirection颠倒滚动方向,不同的值就会呈现不同的效果。

3:注册GyroscopeObserve

在使用PanoramaImageView的Activity或Fragment中,您应该在onResume()中注册GyroscopeObserver,并记得在onPause()中注销它。

public class MyActivity extends AppCompatActivity {
  
    private GyroscopeObserver gyroscopeObserver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Initialize GyroscopeObserver.
        gyroscopeObserver = new GyroscopeObserver();
        // Set the maximum radian the device should rotate to show image's bounds.
        // It should be set between 0 and π/2.
        // The default value is π/9.
      	gyroscopeObserver.setMaxRotateRadian(Math.PI/9);

        PanoramaImageView panoramaImageView = (PanoramaImageView) findViewById(R.id.panorama_image_view);
        // Set GyroscopeObserver for PanoramaImageView.
        panoramaImageView.setGyroscopeObserver(gyroscopeObserver);
    }

    @Override
    protected void onResume() {
        super.onResume();
        // Register GyroscopeObserver.
        gyroscopeObserver.register(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Unregister GyroscopeObserver.
        gyroscopeObserver.unregister();
    }
}

设置OnPanoramaScrollListener以观察滚动状态 如果要在图像滚动时获得回调,PanoramaImageView需要设置OnPanoramaScrollListener。

panoramaImageView.setOnPanoramaScrollListener(new PanoramaImageView.OnPanoramaScrollListener() {
    @Override
    public void onScrolled(PanoramaImageView view, float offsetProgress) {
        // Do something here.
        // The offsetProgress range from -1 to 1, indicating the image scrolls
        // from left(top) to right(bottom).
    }
});

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

仿uc下部弹出菜单

先说说我怎么会无聊到这种地步去弄这个代码呢,在今年2月份的时候公司本来要做个这种弹出的菜单的,有5个按钮每个都有一个菜单,记得网上有仿UC菜单的源码,就下下来看...

2018
来自专栏androidBlog

你真的了解View的坐标吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

712
来自专栏向治洪

滑动开关按钮SlideSwich

iphone上有开关控件,很漂亮,其实android4.0以后也有switch控件,但是只能用在4.0以后的系统中,这就失去了其使用价值,而且我觉得它的界面也...

32010
来自专栏知识分享

3-系统方案A(Activity界面跳转,携带数据,显示曲线界面)

https://www.cnblogs.com/yangfengwu/p/9970387.html

852
来自专栏Android干货园

Android自定义下拉刷新动画--仿百度外卖下拉刷新

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/51...

1133
来自专栏非著名程序员

简单好用的阴影库 ShadowLayout

在开发过程中常会遇见带阴影效果的控件,通过 SDK 提供的 CardView 和 android:elevation可以实现,也可以通过 .9 图实现。但是使用...

3815
来自专栏向治洪

android 仿音悦台页面交互效果

概述 新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,然后在底部悬浮一个小框,还可以左右拖动,然后回弹的时候也会有相应的效果,这种交互效果在...

2437
来自专栏QQ音乐技术团队的专栏

小窗播放视频的原理和实现(下)

本文对小窗视频播放进行了详细的研究,针对几种实现方案进行了深入的对比分析,进而给出实现小窗视频播放的最优解。其中通过对系统源码的分析,详细探究了如何完美地实现移...

77010
来自专栏三好码农的三亩自留地

Android九宫格控件-可在ListView和RecyclerView中使用

熟悉Android App开发的同学,肯定都清楚,如果要显示多张图片,类似九宫格,可以用GridView或者GridLayout来做,但是如果需求要求在List...

1502
来自专栏向治洪

SliferMenu详解

SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大...

1965

扫码关注云+社区