Android編程實現(xiàn)大圖滾動顯示的方法
本文實例講述了Android編程實現(xiàn)大圖滾動顯示的方法。分享給大家供大家參考,具體如下:
問題:
我有一張比較大的圖片,比如長寬都是屏幕的兩倍大小,我想實現(xiàn)的功能是首先將圖片居中顯示,由于圖片太大顯然只能顯示一部分,然后可以通過拖動,實現(xiàn)圖片的平滑滾動(既看不出來滾動刷新痕跡)。
就像google地圖一樣,如果用mapView這個控件,那么可以在屏幕上拖動整個地圖,但是由于地圖信息量太大,如果一次拖動過快,那么屏幕會暫時顯示出一些刷新痕跡(灰白的格子)。
想使用mapView來加載已有圖片,但是沒有成功,后來也使用了Srollview控件,和最常用的imageView,還是沒有成功。
解決:
經(jīng)過大量查資料,使用imageView配合onTouch事件,可以解決。
關(guān)鍵代碼:
布局文件中imageView控件如下
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" android:scaleType="center" android:background="#fff" android:src="@drawable/picName" />
Activity文件中主要代碼如下
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xml_name_layout); final ImageView switcherView = (ImageView) this.findViewById(R.id.img); switcherView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View arg0, MotionEvent event) { float curX, curY; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mx = event.getX(); my = event.getY(); break; case MotionEvent.ACTION_MOVE: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); mx = curX; my = curY; break; case MotionEvent.ACTION_UP: curX = event.getX(); curY = event.getY(); switcherView.scrollBy((int) (mx - curX), (int) (my - curY)); break; } return true; } }); }
實現(xiàn)效果如下:
原圖:
模擬器里效果:
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android圖形與圖像處理技巧總結(jié)》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android中RecyclerView實現(xiàn)滑動刪除與拖拽功能
這篇文章主要使用了RecyclerView的ItemTouchHelper類實現(xiàn)了Item的拖動和刪除功能,ItemTouchHelper是v7包下的一個類,下面來看看詳細的介紹吧,需要的朋友可以參考學(xué)習(xí)。2017-02-02Android Studio 當(dāng)build時候出錯解決辦法
這篇文章主要介紹了 Android Studio在build的時候出現(xiàn)transformClassesWithDexForDebug錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05Android中使用socket使底層和framework通信的實現(xiàn)方法
native和framework的通信是通過jni,但是這一般只是framework調(diào)用native,native如果有消息要怎樣通知上層 呢?android中GSP模塊提供一種解決思路,但是實現(xiàn)有些復(fù)雜,這里介紹一種使用socket通信的方法可以使native和framework自由通信,感興趣的朋友一起看看吧2016-11-11Android調(diào)節(jié)屏幕亮度實現(xiàn)代碼
這篇文章主要介紹了Android調(diào)節(jié)屏幕亮度實現(xiàn)代碼,調(diào)節(jié)屏幕亮度時,先設(shè)置當(dāng)前activity亮度,再并保存為系統(tǒng)亮度即可,本文分別給出兩個步驟的實現(xiàn)代碼,需要的朋友可以參考下2015-05-05Android互聯(lián)網(wǎng)訪問圖片并在客戶端顯示的方法
這篇文章主要介紹了Android互聯(lián)網(wǎng)訪問圖片并在客戶端顯示的方法,結(jié)合實例分析了Android處理圖片的技巧,并附帶了Android的URL封裝類,網(wǎng)絡(luò)連接封裝類與輸出流封裝類,需要的朋友可以參考下2015-12-12解決Android SearchView不顯示搜索icon的問題
這篇文章主要介紹了解決Android SearchView不顯示搜索icon問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05