簡體   English   中英

放大android-保持圖像可見

[英]Zooming in android - keep image in view

我知道實際上有很多線程可以實現捏縮放-但是我已經走了這么遠。

我正在使用SimpleScaleGestureListener來處理縮放。 我已經設法確保您不能縮小到比將圖像高度與屏幕尺寸相同(因此,您的圖像高度將始終至少是可用屏幕尺寸的高度)更遠。

但是,我正在尋找一種自動檢測圖像是否在這些邊界之外平移的方法。 就像顯示圖像的標准android方法一樣。 因此,如果我放大並平移圖像,然后縮小,我希望它檢測圖像底部何時到達屏幕底部,然后縮放的“樞軸”相應地進行調整,因此永遠不允許圖像上方或下方的空白”。 誰能幫我?

供參考,這是我的onScale和onDraw方法:

public boolean onScale(ScaleGestureDetector detector){
    float minScale = (float) ((float) SCREEN_SIZE.y / (float) DRAWABLE_SIZE.y);
    mScaleFactor *= detector.getScaleFactor();
    mScaleFactor = Math.max(minScale, Math.min(mScaleFactor, 5.0f));
    invalidate();
    return true;
}

protected void onDraw(Canvas canvas) {
    canvas.save();
    canvas.drawColor(Color.DKGRAY);
    canvas.translate(mPosX, mPosY);
    canvas.scale(mScaleFactor, mScaleFactor, getDrawable().getIntrinsicWidth() / 2,
    getDrawable().getIntrinsicHeight() / 2);

    this.getDrawable().draw(canvas);
    canvas.restore();
}

您可以使用android.graphics.Matrix轉換繪制的位圖。 Matrix既包含縮放比例又包含平移。

您只需將矩陣應用於畫布:canvas.setMatrix

您可以輕松計算所需矩形的適合屏幕大小:

Matrix.setRectToRect

其中source是圖像(位圖)的實際分辨率矩形,左側/頂部為0,0,右側底部為width / heght。 dst是將在其中繪制位圖的目標視圖的矩形。

然后,您也可以解決任務-知道將在哪里繪制圖像的邊框。 Matrix.mapRect將計算您的位圖矩形(如前所述)在屏幕坐標中出現在屏幕上的位置。 然后,您可以簡單地在相對於屏幕的左側繪制圖像左側的位置,頂部/右側/底部相同。

我不會給您代碼,只是提示要走的路。 我最近用捏縮放,適合屏幕顯示,動畫過渡等方式對圖像查看器進行了編碼,所有這些操作都是使用Matrix及其相關操作完成的。

一個簡單的解決方案是使用此小部件

http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM