Java “收缩缩放”仅放大到中心

Java “收缩缩放”仅放大到中心,java,android,gesture,android-gesture,Java,Android,Gesture,Android Gesture,我正在尝试使我的应用程序中的图像可缩放。它应该能够放大图像的不同部分。由于代码是现在,无论我在哪里做缩放手势,它只会放大到中心,所以我没有机会移动图像或放大到其他区域。 什么是必要的偏心缩放和移动缩放图像 public class MainActivity extends AppCompatActivity { private ScaleGestureDetector mScaleGestureDetector; private float mScaleFactor = 1.0f; priva

我正在尝试使我的应用程序中的图像可缩放。它应该能够放大图像的不同部分。由于代码是现在,无论我在哪里做缩放手势,它只会放大到中心,所以我没有机会移动图像或放大到其他区域。 什么是必要的偏心缩放和移动缩放图像

public class MainActivity extends AppCompatActivity {

private ScaleGestureDetector mScaleGestureDetector;
private float mScaleFactor = 1.0f;
private ImageView mImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mImageView = (ImageView)findViewById(R.id.imageView);
    mImageView.setScaleType(ImageView.ScaleType.FIT_XY);
    mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());

    mImageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            mScaleGestureDetector.onTouchEvent(event);

            return true;
        }

    });
}


private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {

    @Override
    public boolean onScale(ScaleGestureDetector scaleGestureDetector){
        mScaleFactor *= scaleGestureDetector.getScaleFactor();
        mScaleFactor = Math.max(1.0f,
                Math.min(mScaleFactor, 1.7f));
        mImageView.setScaleX(mScaleFactor);
        mImageView.setScaleY(mScaleFactor);

        return true;
    }
}

}

出于您的目的,最好的将添加到此库:


当然,也可以将此库添加为本地模块,并根据您的需要对其进行自定义。

太好了,这确实适合我!你熟悉那个图书馆吗?这样你就可以帮我解决一个问题了?@MikeKng我能帮你什么?用法很简单,至少通过聊天给我写信。这可能是个问题,我只在手机上登录。但我的问题是,在我有一个不可移动的图像之前,用onTouch方法我可以得到被触摸像素的颜色。现在,只要图像不移动,它就可以工作,但当我放大时,它会返回错误的颜色,就像所有的东西都被置换了一样。但我找不到那个断层的模式。我使用的是bitmap.getPixel()方法,所以我认为在移动图像时它不会影响它。我要把它添加到上面的代码中吗?