1

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

因此有人可以帮助我吗?如果您能给我一个示例代码或链接,那将非常有用。

这是我正在尝试的代码。

主.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;
        }
    }
}

提前致谢。

4

3 回答 3

0

尝试使用活动 xml 的高级选项卡中可用的缩放控制

于 2013-08-01T10:59:20.080 回答
0

官方开发者网站上提供了基本动画教程:-点击这里

更新 :-

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

large_image_scrolling_using_low_level_touch_events

带有谷歌地图界面的缩放和平移大图像

照片变焦

于 2013-08-01T11:03:20.507 回答
0

试试这个代码放大和缩小 ImageView,

把它放在 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" />

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

我希望它会帮助你..

于 2016-04-19T04:52:56.417 回答