如何在android中缩放和滚动imageView

时间:2014-07-11 11:35:40

标签: android imageview scrollview image-zoom

我知道这个问题已经详细讨论了,我知道并尝试了一些解决方案,包括" TouchImageView"。但我的问题略有不同。我想在没有动作,手势或任何触摸事件的帮助下滚动图像。我之所以使用ScrollView,认为它可以解决问题。

我使用ZoomControlers小部件,只是调用imageView的缩放功能进行放大和缩小...

问题是ScrollView没有响应......任何建议都将受到赞赏

以下是我的XML和MainActivity类代码......

activity_zoom_image.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="${packageName}.${activityClass}" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scroll_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:contentDescription="@string/zoom"
            android:isScrollContainer="true"
            android:src="@drawable/eiff" />
    </ScrollView>

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:orientation="vertical" >

    <ZoomControls
        android:id="@+id/zoomControls1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</LinearLayout>

ZoomImage.java的OnCreat方法

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(new Zoom(this));
    setContentView(R.layout.activity_zoom_image);

    image = (ImageView) findViewById(R.id.imageView1);
    zoom = (ZoomControls) findViewById(R.id.zoomControls1);
    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.eiff);
    image.setImageBitmap(bitmap);

    zoom.setOnZoomInClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            float x = image.getScaleX();
            float y = image.getScaleY();

            image.setScaleX((float) (x+1));
            image.setScaleY((float) (y+1)); 
        }
    });

    zoom.setOnZoomOutClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            float x = image.getScaleX();
            float y = image.getScaleY();
            if (x <= 1 || y <= 1)
                return;
            image.setScaleX((float) (x-1));
            image.setScaleY((float) (y-1));
        }
    });

}

2 个答案:

答案 0 :(得分:0)

尝试使用外部jar文件,例如pinchzoom.jar。只是google它,你可以找到一个和说明。

http://androidtrainningcenter.blogspot.in/2013/04/update-pinch-to-zoom-example-and.html

这是链接,尝试一下......干杯

答案 1 :(得分:0)

<ScrollView
    android:id="@+id/scroll_1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:contentDescription="@string/zoom"
        android:isScrollContainer="true"
        android:src="@drawable/eiff" />
</ScrollView>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:orientation="vertical" >

    <ZoomControls
        android:id="@+id/zoomControls1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</LinearLayout>