Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何缩放和滚动动态创建的位图_Android_Bitmap_Imageview_Scrollview_Zooming - Fatal编程技术网

Android如何缩放和滚动动态创建的位图

Android如何缩放和滚动动态创建的位图,android,bitmap,imageview,scrollview,zooming,Android,Bitmap,Imageview,Scrollview,Zooming,在我的应用程序中,我使用以下代码保存从服务器下载的地图 <?xml version="1.0" encoding="utf-8"?> 目前,我只能上下滚动图像。 我需要有能力滚动图像的所有方向,也可以放大和缩小它。 如何做到这一点? 谢谢 Eyal.Sephiroto根据Gallery应用程序代码制作了一个非常简单的ImageViewTouch: 我在一个项目中使用了它,它工作得非常完美,可以从捏到缩,以及任何你想要的东西。默认情况下,设置图像时,图像将缩小以适应屏幕

在我的应用程序中,我使用以下代码保存从服务器下载的地图

<?xml version="1.0" encoding="utf-8"?>


目前,我只能上下滚动图像。 我需要有能力滚动图像的所有方向,也可以放大和缩小它。 如何做到这一点? 谢谢
Eyal.

Sephiroto根据Gallery应用程序代码制作了一个非常简单的ImageViewTouch:

我在一个项目中使用了它,它工作得非常完美,可以从捏到缩,以及任何你想要的东西。默认情况下,设置图像时,图像将缩小以适应屏幕

编辑:如果要防止自动调整图像大小,可以将ImageViewTouchBase.GetProperteBaseMatrix方法更改为以下内容:

protected void getProperBaseMatrix(RotateBitmap bitmap, Matrix matrix) {
    float viewWidth = getWidth();
    float viewHeight = getHeight();
    float w = bitmap.getWidth();
    float h = bitmap.getHeight();
    matrix.reset();
    matrix.postConcat(bitmap.getRotateMatrix());
    matrix.postTranslate((viewWidth - w) / 2, (viewHeight - h) / 2);
}

这将使图像居中,而无需调整其大小。

例如,您可以使用WebView,或者查看gallery应用程序的操作方式:将图像添加到此库时,库会自动调整图像大小。你是否试图避免自动调整大小?是的,我删除了它。我改变的方法在我更新的帖子中。谢谢你的帮助。现在,我尝试在任何缩放操作之前拖动图像,但不自动调整大小,但它不会移动。如何修复它?以防万一,每次您执行某项操作时,都会调用一个方法来重新居中图像(不确定名称是什么),如果您想完全绕过它,可以不调用它,也可以让它为空。
protected void getProperBaseMatrix(RotateBitmap bitmap, Matrix matrix) {
    float viewWidth = getWidth();
    float viewHeight = getHeight();
    float w = bitmap.getWidth();
    float h = bitmap.getHeight();
    matrix.reset();
    matrix.postConcat(bitmap.getRotateMatrix());
    matrix.postTranslate((viewWidth - w) / 2, (viewHeight - h) / 2);
}