Android圖片處理教程之全景查看效果實(shí)現(xiàn)
前言
在玩頭條的時(shí)候,現(xiàn)在我們會(huì)發(fā)現(xiàn)有很多的全景圖的廣告這樣快看起來(lái)非常的酷。今天就來(lái)說(shuō)說(shuō)這個(gè)小效果的實(shí)現(xiàn)
PS:Android對(duì)于圖片處理這塊資源還是挺多的,之前用OpenGL制作圖片的全景效果,耗時(shí)耗力,而且只能點(diǎn)擊進(jìn)去后看到,但是效果是非常的號(hào),今天所寫(xiě)的是編寫(xiě)好的一個(gè)圖片控件,只要拿來(lái)用就可以了。效果不是那么好,處理的之后就是一張圖片截取中間部分放大再顯示在屏幕中間,通過(guò)擺動(dòng)手機(jī)查看被遮擋部分
如圖:一開(kāi)始圖片是這樣的
上面就是效果圖了
實(shí)現(xiàn)方法如下
1:添加依賴(lài)
//全景圖片 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
這里面有三個(gè)屬性(其中三個(gè))
一個(gè)是app:piv_enablePanoramaMode,使用全景效果模式,app:piv_show_scrollbar滾動(dòng)條顯示,app:piv_invertScrollDirection顛倒?jié)L動(dòng)方向,不同的值就會(huì)呈現(xiàn)不同的效果。
3:注冊(cè)GyroscopeObserver
在使用PanoramaImageView的Activity或Fragment中,您應(yīng)該在onResume()中注冊(cè)GyroscopeObserver,并記得在onPause()中注銷(xiāo)它。
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(); } }
設(shè)置OnPanoramaScrollListener以觀察滾動(dòng)狀態(tài) 如果要在圖像滾動(dòng)時(shí)獲得回調(diào),PanoramaImageView需要設(shè)置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). } });
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android studio2.3.3升級(jí)到3.1.2坑(小記)
這篇文章主要介紹了Android studio2.3.3升級(jí)3.1.2坑(小記),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09基于Android CALL && SendMes Test的相關(guān)介紹
本篇文章小編為大家介紹,Android CALL && SendMes Test 需要的朋友參考下2013-04-04Android 修改系統(tǒng)關(guān)機(jī)動(dòng)畫(huà)的實(shí)現(xiàn)
這篇文章主要介紹了Android 修改系統(tǒng)關(guān)機(jī)動(dòng)畫(huà)的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2016-10-10Android Studio無(wú)法改變Button背景顏色解決辦法
今天我來(lái)和大家探討一個(gè)在Android開(kāi)發(fā)中常見(jiàn)但可能讓初學(xué)者感到困惑的問(wèn)題,如何在Android Studio中改變Button的背景顏色,這個(gè)問(wèn)題看似簡(jiǎn)單,但實(shí)際操作中可能會(huì)遇到一些意想不到的挑戰(zhàn),接下來(lái),我將從多個(gè)角度為大家提供解決方案,需要的朋友可以參考下2024-05-05Flutter實(shí)現(xiàn)倒計(jì)時(shí)秒數(shù)轉(zhuǎn)時(shí)分秒然后倒計(jì)時(shí)功能
有一個(gè)需求,需要在頁(yè)面進(jìn)行顯示倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束后,做相應(yīng)的邏輯處理,這篇文章主要介紹了Flutter實(shí)現(xiàn)倒計(jì)時(shí)功能,秒數(shù)轉(zhuǎn)時(shí)分秒,然后倒計(jì)時(shí),需要的朋友可以參考下2023-08-08Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼
下面小編就為大家分享一篇Android 獲取服務(wù)器與客戶端時(shí)差的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Android編程實(shí)現(xiàn)自定義PopupMenu樣式示例【顯示圖標(biāo)與設(shè)置RadioButton圖標(biāo)】
這篇文章主要介紹了Android編程實(shí)現(xiàn)自定義PopupMenu樣式功能,結(jié)合實(shí)例形式分析了Android顯示圖標(biāo)與設(shè)置RadioButton圖標(biāo)相關(guān)操作技巧,需要的朋友可以參考下2017-01-01