单击android中的按钮时如何缩放ImageView

时间:2013-08-01 10:28:44

标签: android zoom image-zoom

我有一个要求,我有一个ImageView和两个用于放大和缩小的按钮。我想在单击按钮时缩放图像。我搜索了谷歌和StackOverFlow,但遗憾的是无法找到解决方案。

因此有人可以帮助我吗?如果你能给我一个非常适合的示例代码或链接。

以下是我正在尝试的代码。

main.xml中

<merge xmlns:android="http://schemas.android.com/apk/res/android" >

    <ImageView
        android:id="@+id/imgView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:contentDescription="@string/imgCamera"
        android:layout_weight="1"
        android:scaleType="fitXY"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:src="@drawable/matterhorn" />

     <Button
        android:id="@+id/btnZoomIn"
        android:layout_width="65dp"
        android:layout_height="35dp"
        android:layout_gravity="bottom|left"
        android:layout_marginLeft="260dp"
        android:layout_marginBottom="15dp"
        android:layout_weight="1"
        android:text="Zoom In"
        android:background="@android:color/transparent"
        android:drawableLeft="@drawable/btn_icon_zoom_in"
        >
    </Button>

    <Button
        android:id="@+id/btnZoomOut"
        android:layout_width="65dp"
        android:layout_height="35dp"
        android:layout_gravity="bottom|left"
        android:layout_marginLeft="330dp"
        android:layout_marginBottom="15dp"
        android:layout_weight="1"
        android:text="Zoom Out"
        android:background="@android:color/transparent"
        android:drawableLeft="@drawable/btn_icon_zoom_out"
        >
    </Button>
</merge>

这是我的主要活动“ZoomActivity.java”,其中将处理事件

package com.image.zoomcontrol;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class ZoomActivity extends Activity implements OnClickListener {

    private ImageView imgview;
    private Button btnZoomIn;
    private Button btnZoomOut;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        imgview = (ImageView) findViewById(R.id.imgView);

        btnZoomIn = (Button) findViewById(R.id.btnZoomIn);
        btnZoomIn.setOnClickListener(this);

        btnZoomOut = (Button) findViewById(R.id.btnZoomOut);
        btnZoomOut.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btnZoomIn:
            // Here I need Zoom in Code
            break;

        case R.id.btnZoomOut:
            // Here I need Zoom out Code
            break;
        }
    }
}

提前致谢。

3 个答案:

答案 0 :(得分:0)

尝试使用activity xml

的高级选项卡中提供的zoomcontrol

答案 1 :(得分:0)

基本动画教程可在官方开发者网站上找到: - Click Here

更新: -

这些链接并不完全适用于Android,但值得一看: -

large_image_scrolling_using_low_level_touch_events

zoom-and-pan-large-images-with-google-map-interface

photo-zoom

答案 2 :(得分:0)

尝试使用此代码放大和缩小ImageView,

put this in  main.xml,

<ZoomControls
        android:id="@+id/zoomControls1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40dp" />


In MainActivity.java,

 zoom = (ZoomControls) findViewById(R.id.zoomControls1);
     zoom.setOnZoomInClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

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

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

            zoom.setOnZoomOutClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub


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

                img.setScaleX((float) (x-1));
                img.setScaleY((float) (y-1));
            }
        });

我希望它能帮到你..