Android圖片處理--全景查看效果

PS:Android對於圖片處理這塊資源仍是挺多的,以前用OpenGL製做圖片的全景效果,耗時耗力,並且只能點擊進去後看到,可是效果是很是的號,今天所寫的是編寫好的一個圖片控件,只要拿來用就能夠了。效果不是那麼好,處理的以後就是一張圖片截取中間部分放大再顯示在屏幕中間,經過擺動手機查看被遮擋部分,如圖:一開始圖片是這樣的android

上面就是效果圖了app

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" />

佈局的根目錄必定要加上ide

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

這裏面有三個屬性(其中三個)佈局

一個是app:piv_enablePanoramaMode,使用全景效果模式,app:piv_show_scrollbar滾動條顯示,app:piv_invertScrollDirection顛倒滾動方向,不一樣的值就會呈現不一樣的效果。this

3:註冊GyroscopeObserver

在使用PanoramaImageView的Activity或Fragment中,您應該在onResume()中註冊GyroscopeObserver,並記得在onPause()中註銷它。spa

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。code

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).
    }
});
相關文章
相關標籤/搜索