使用android模拟器中的按钮进行缩放和平移

时间:2014-07-12 12:46:28

标签: android zoom pan

我正在尝试为我的uni项目实现缩放功能。所以我的应用程序从SD库中加载图片。它有用于缩放和平移的按钮。我必须在模拟器中实现这个项目。

到目前为止,我主要找到了多点触控或捏缩放的解决方案。但我不能使用多点触控,因为模拟器不允许它,这也是我教授的要求。只需用鼠标点击一个按钮,我就无法真正找到缩放的实际来源。任何提示在哪里/如何开始?

谢谢!

1 个答案:

答案 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);
    }
}