Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 圖片雙擊放大倍數的算法

android 圖片雙擊放大倍數的算法

編輯:關於Android編程

圖片雙擊放大倍數和圖片大小、顯示圖片的view大小,及圖片當前的scale大小均有關系。
為了避免圖片放大過大,設置了一個放大倍數的最大限制SCALE_LIMIT,目前該值為4.

具體算法如下所示:
圖片的寬和高分別記為:imageW imageH
顯示圖片的view寬和高分別記為:viewW viewH
幾個重要的比例記為:
scale_1 = viewW / imageW
scale_2 = viewH / imageH
scale_3 = viewW / imageH
scale_4 = viewH / imageW

如果當前圖片的寬高比>2或者<0.5,則按照如下算法計算放大倍數zoomRate:
(1)當前scale = min(scale_1, scale_2);
(2)zoomRate = min(max(scale_1, scale_2), max(scale_3, scale_4));
(3)如果zoomRate > SCALE_LIMIT,則zoomRate = SCALE_LIMIT;
(4)如果scale >= zoomRate,則保留(1)的結果從第(2)步重新計算zoomRate值,否則跳至(6)
zoomRate = max(max(scale_1, scale_2), max(scale_3, scale_4));
(5)如果zoomRate > SCALE_LIMIT,則zoomRate = SCALE_LIMIT;
(6)此時zoomRate值即是圖片應該放大的倍數。

如果當前圖片的寬高比<=2或者>=0.5,則按照如下算法計算放大倍數zoomRate:
(1)當前scale = min(scale_1, scale_2);
(2)largerInitRate = max(min(scale_1, scale_2), min(scale_3, scale_4));
(3)如果largerInitRate > SCALE_LIMIT,則largerInitRate = SCALE_LIMIT;
(4)zoomRate = min(scale_2, largerInitRate * 2.0f);
(5)如果zoomRate > SCALE_LIMIT,則zoomRate = SCALE_LIMIT;
(6)如果scale >= zoomRate,則保留前3步的結果,從第(4)步重新計算zoomRate值,否則跳至(8)
zoomRate = largerInitRate * 2.0f;
(7)如果zoomRate > SCALE_LIMIT,則zoomRate = SCALE_LIMIT;
(8)此時zoomRate值即是圖片應該放大的倍數。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved