我正在尝试为我的uni项目实现缩放功能。所以我的应用程序从SD库中加载图片。它有用于缩放和平移的按钮。我必须在模拟器中实现这个项目。
到目前为止,我主要找到了多点触控或捏缩放的解决方案。但我不能使用多点触控,因为模拟器不允许它,这也是我教授的要求。只需用鼠标点击一个按钮,我就无法真正找到缩放的实际来源。任何提示在哪里/如何开始?
谢谢!
答案 0 :(得分:0)
好的,在这里,我终于想出了一个只需使用按钮就可以轻松缩放的代码。我把它放在这里以防其他人需要这样的东西。但我想它仍然可以优化。例如,代码在您需要时无需平移。缩放可能也不适合您的需求,在这种情况下您可以随意调整它。
package com.example.ZoomApp;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;
public class ZoomInOut extends ImageView
{
Matrix matrix = new Matrix();
float saveScale = 1f;
float right, bottom, origWidth, origHeight, bmWidth, bmHeight;
public ZoomInOut(Context context, AttributeSet attr){
super(context, attr);
setScaleType(ScaleType.MATRIX);
matrix.setTranslate(1f, 1f);
setImageMatrix(matrix);
}
public void ZoomIn () {
saveScale = saveScale + 0.1f;
matrix.setScale( saveScale, saveScale );
setImageMatrix( matrix );
center(true, true);
invalidate();
}
public void ZoomOut () {
saveScale = saveScale - 0.1f;
matrix.setScale( saveScale, saveScale );
setImageMatrix( matrix );
invalidate();
}
@Override
public void setImageBitmap(Bitmap bitmap){
bmWidth=bitmap.getWidth();
bmHeight=bitmap.getHeight();
super.setImageBitmap(bitmap);
}
}