導航:首頁 > 操作系統 > 安卓展示圖片使用什麼控制項

安卓展示圖片使用什麼控制項

發布時間:2024-06-29 18:17:47

A. Android自定義控制項之可平移、縮放、旋轉圖片控制項

先上效果圖

源碼

單點拖動圖片對圖片進行平移操作。雙手縮放圖片大小和旋轉圖片到一定的角度。圖片縮放的時候 不能大於最大的縮放因子和小於最小的縮放因子。大於最大縮放因子或者小於最小縮放因子需要對圖像進行回彈。圖片旋轉的角度只能為90度的倍數,不滿足90度要進行回彈。圖片回彈要一個漸變的效果。

大體思路: 首先,Android中提供了Matrix類可以對圖像進行處理。其次,要顯示一張圖片最容易想到的就是ImageView。回彈要求漸變的過程,可以通過屬性動畫進行設置。所以大體的思路是:繼承ImageView,重寫onTouchEvent()方法,判斷事件類型,在對應的事件使用Matrix對圖像進行變換。
Matrix是一個已經封裝好的矩陣,最重要的作用就是對坐標點進行變換。
舉個栗子:
1.某個點(x0,y0,1)通過單位矩陣E映射得到的點還是(x0,y0,1)。

3.點(x0,y0,1)通過矩陣T映射得到的點就會做如下的變換

可以看到點(x0,y0,1)經過T矩陣在x軸方向上平移了dx,在y軸方向上平移了dy。

通過以上的變換可以得到具體的思路: 我們維護一個圖像對應的矩陣mCurrentMatrix,該矩陣主要是對ImageView中的圖像的各個點進行映射。ImageView在容器位置擺放完成之後,置mCurrentMatrix矩陣為單位矩陣。當onTouchEvent()方法中觸發單點觸控並且手指進行平移的時候,調用矩陣mCurrentMatrix的postTranslate(dx,dy),對mCurrentMatrix進行變換。當手指抬起,利用變換結束後的矩陣對圖像的各個點進行映射,從而得到平移變換後的圖像。同理可得,在兩只手指進行縮放旋轉的時候,我們對矩陣mCurrentMatrix進行各種變換,當縮放旋轉的事件結束再利用變換完的矩陣去映射圖像的各個點,從而得到縮放、旋轉後的圖像。

安卓自定義View進階 - Matrix原理
安卓自定義View進階 - Matrix詳解

首先理清事件的邏輯:

初始化圖像大小和位置

縮放圖像大小和控制項大小自適應,平移圖像中心和控制項中心重合

onTouchEvent()函數

平移操作

將圖像對應的矩陣進行變換。

縮放操作

mBoundRectF為記錄圖像邊界的矩形。縮放的時候選取圖像的中心進行縮放。

旋轉操作

旋轉的時候旋轉的旋轉中心也是圖像的中心

圖像中各個點的映射

調用ImageView的setImageMatrix(Matrix matrix)會讓ImageView根據設置的matrix去重新繪制圖像。

更新圖像的矩形邊界

獲得圖像的矩形,並根據矩陣映射矩形各個點的坐標。

縮放回彈

旋轉回彈

一些計算方法

要求圖像的變換是一個漸變的過程,很容易想到的就是屬性動畫。因為屬性動畫本身就是對值進行不斷set的過程。而我們維護的矩陣也是一個值,所以很自然可以想到,如果得到回彈之前的矩陣的值以及回彈之後矩陣的值,就可以根據動畫監聽器中動畫當前的系數值去改變矩陣的值。

對animator對象設置完監聽器之後,就可以在手指抬起的時候調用屬性動畫的start()方法開啟動畫。

自定義可平移、縮放、旋轉的控制項主要點有兩個方面:一是onTouchEvent()中判斷平移、旋轉、縮放的觸發條件,平移位移量、縮放比例因子、旋轉角度的計算。二是Matrix矩陣的應用。

閱讀全文

與安卓展示圖片使用什麼控制項相關的資料

熱點內容
ipa怎麼下載到安卓手機 瀏覽:670
單片機秒錶推薦 瀏覽:474
win7電腦如何上傳文件到雲伺服器 瀏覽:726
文件加密為啥能直接打開 瀏覽:355
如何看伺服器的環境 瀏覽:618
有什麼好用的製作視頻app 瀏覽:479
保存網路怎麼添加密碼 瀏覽:531
棉被怎麼壓縮 瀏覽:870
gt5手機版安卓怎麼下 瀏覽:890
羅技g413怎麼編程 瀏覽:770
小神的伺服器ip地址是什麼 瀏覽:661
程序員大爺采訪 瀏覽:323
廣聯達算量怎麼增加加密區 瀏覽:487
steam截屏圖片默認文件夾 瀏覽:184
java環境變數設置mac 瀏覽:170
安卓如何傳原圖到ipad 瀏覽:850
命令方塊手機版在哪裡 瀏覽:145
po如何進去伺服器 瀏覽:479
專門看美國劇情片網站 瀏覽:598
漏點的喪屍電影 瀏覽:864