當前位置:首頁 » 安卓系統 » android點擊圖片縮小

android點擊圖片縮小

發布時間: 2022-11-17 11:25:03

㈠ Android 如何通過帽子右下角的按鈕來控制圖片的縮放和旋轉

Android中對圖片處理應用比較常見,所以整理了一些對圖片的基本操作處理功能方法:
/**
* 圖片反轉
* @param img
* @return
*/
public Bitmap toturn(Bitmap img){
Matrix matrix = new Matrix();
matrix.postRotate(90); /*翻轉90度*/
int width = bitmap.getWidth();
int height =bitmap.getHeight();
img = Bitmap.createBitmap(img, 0, 0, width, height, matrix, true);
return img;
}
/**
* 圖片縮放
* @param bigimage
* @param newWidth
* @param newHeight
* @return
*/
public Bitmap tochange(Bitmap bigimage,int newWidth,int newHeight){
// 獲取這個圖片的寬和高
int width = bigimage.getWidth();
int height = bigimage.getHeight();
// 創建操作圖片用的matrix對象
Matrix matrix = new Matrix();
// 計算縮放率,新尺寸除原始尺寸
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// 縮放圖片動作
matrix.postScale(scaleWidth, scaleHeight);
Bitmap bitmap = Bitmap.createBitmap(bigimage, 0, 0, width, height,matrix, true);
return bitmap;
}

/**
* 程序切割圖片
* @param bitmap
* @param x
* @param y
* @param w
* @param h
* @return
*/
public Bitmap BitmapClipBitmap(Bitmap bitmap,int x, int y, int w, int h) {
return Bitmap.createBitmap(bitmap, x, y, w, h);
}
/**
* 圖片疊加
* @param b
* @return
*/
public Bitmap diejia(Bitmap b){

if(!b.isMutable()){

㈡ 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矩陣的應用。

㈢ android中有方法可以對圖片進行縮放嗎(不是縮放畫布,是真的改變了原來圖片的大小)

scaleType:CENTER /center 在視圖中心顯示圖片,並且不縮放圖片CENTER_CROP / centerCrop 按比例縮放圖片,使得圖片長 (寬)的大於等於視圖的相應維度CENTER_INSIDE / centerInside 按比例縮放圖片,使得圖片長 (寬)的小於等於視圖的相應維度FIT_CENTER / fitCenter 按比例縮放圖片到視圖的最小邊,居中顯示FIT_END / fitEnd 按比例縮放圖片到視圖的最小邊,顯示在視圖的下部分位置FIT_START / fitStart 把圖片按比例擴大/縮小到視圖的最小邊,顯示在視圖的上部分位置FIT_XY / fitXY 把圖片不按比例縮放到視圖的大小顯示MATRIX / matrix 用矩陣來繪制 到安卓巴士網站查看回答詳情>>

㈣ android開發中縮放圖片有哪些方法

基本上都是手勢的綻放,可以用Matrix的postScale(x,y)或setScale(x,y)方法做

㈤ Android怎麼實現圖片雙擊放大縮小,手勢拖動,單擊返回

需要用到
https://github.com/bm-x/PhotoView
打不開就帆檣

㈥ android如何對viewpager裡面的圖片進行縮放

跟ViewPager沒有關系。對圖片的操作是ImageView,用Matrix來對圖片進行旋轉、縮放、平移等操作,查查Matrix和ImageView的相關內容。

㈦ Android圖片標記(打標簽、支持圖片放大縮小)

先上效果圖

1.為了實現圖片的放到縮小,我選擇了 PhotoView 框架用於顯示圖片。

2.使用 Glide 框架載入圖片

3.實現原理:

通過自定義View繼承FrameLayout,以PhotoView作為背景,動態添加ImageView作為點。

4.主要分析:

1)標簽隨圖片移動:通過實現PhotoView的OnMatrixChangedListener介面,監聽圖片的位置及大小,動態設置標簽的位置

2)點擊圖片任意位置,在此位置生成標簽,

3)標簽添加後,會導致布局重新測量,此時會導致已經放大的圖片回到初始的位置及大小,在onLayout方法中重新設置photoView的Matrix。

矩形框的實現原理類似,難點就是在給icon添加了移動監聽,保證icon可隨處移動

下面是源碼地址

https://github.com/rzdchen/PhotoTagging

㈧ android圖片太大如何獲取圖片尺寸然後縮放

用這個方法吧
//載入需要操作的圖片,這里是一張圖片
bitmap
bitmaporg
=
bitmapfactory.decoderesource(getresources(),r.drawable.r);
//獲取這個圖片的寬和高
int
width
=
bitmaporg.getwidth();
int
height
=
bitmaporg.getheight();
//定義預轉換成的圖片的寬度和高度
int
newwidth
=
200;
int
newheight
=
200;
//計算縮放率,新尺寸除原始尺寸
float
scalewidth
=
((float)
newwidth)
/
width;
float
scaleheight
=
((float)
newheight)
/
height;
//
創建操作圖片用的matrix對象
matrix
matrix
=
new
matrix();
//
縮放圖片動作
matrix.postscale(scalewidth,
scaleheight);

㈨ android 如何利用手勢放大和縮小一個圖片

監聽onTouchEvent(手勢相關的也包含在裡面),設置圖片大小

熱點內容
池田演算法 發布:2025-03-04 19:02:51 瀏覽:283
androidusb共享 發布:2025-03-04 19:02:06 瀏覽:170
安卓左上角數字代表什麼 發布:2025-03-04 19:01:32 瀏覽:812
江都編程貓 發布:2025-03-04 19:01:31 瀏覽:598
第五人格二級密碼如何強制修改 發布:2025-03-04 18:51:04 瀏覽:232
秒拍視頻怎樣上傳騰訊 發布:2025-03-04 18:39:37 瀏覽:42
存儲過程效率 發布:2025-03-04 18:28:12 瀏覽:220
源碼怎麼生成的 發布:2025-03-04 18:28:01 瀏覽:694
初中解壓舞蹈 發布:2025-03-04 18:06:13 瀏覽:779
點餐系統php 發布:2025-03-04 18:06:12 瀏覽:804