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

时间:2011-07-03 14:57:17

标签: android bitmap imageview scrollview zooming

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

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

    <ScrollView android:id="@+id/scrollView1" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:layout_gravity="center"
        android:layout_weight="1.0">

        <ImageView android:id="@+id/mapImageView" 
            android:layout_height="wrap_content"  
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"                 
            android:scaleType="center"/>

    </ScrollView>

目前,我只能上下滚动图像。 我需要能够将图像滚动到所有方向,并且还可以放大和缩小图像。 怎么做? 谢谢, 的Eyal。

1 个答案:

答案 0 :(得分:3)

Sephiroto基于Gallery应用程序代码制作了一个非常简单的ImageViewTouch:http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

我在一个项目中使用它并且它可以完美地工作,具有捏缩放和您可能想要的一切。默认情况下,当您为其设置图像时,图像将缩小以适合屏幕。

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

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

这应该使图像居中而不需要调整大小。