【问题标题】:How to zoom an ImageView when click a button in android单击android中的按钮时如何缩放ImageView
【发布时间】:2013-08-02 05:25:09
【问题描述】:

我有一个要求,我有一个 ImageView 和两个用于放大和缩小的按钮。我想在单击按钮时缩放图像。我搜索了 google 和 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;
        }
    }
}

提前致谢。

【问题讨论】:

    标签: android zooming


    【解决方案1】:

    尝试使用活动 xml 的高级选项卡中提供的缩放控件

    【讨论】:

      【解决方案2】:

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

      更新:-

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

      large_image_scrolling_using_low_level_touch_events

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

      photo-zoom

      【讨论】:

      • 嗨。谢谢回复。我想要与这个例子有点不同。简单地说,当我点击“ZoomIn”按钮时,图像必须是缩放的,反之亦然(ZoomOut)
      • 您好,感谢您的回复,但这些链接使用触摸事件进行缩放。但我的要求是,当我单击“放大”按钮时,我想放大图像,反之亦然。你能帮我解决这个问题吗?谢谢。
      • 我从来没有这样做过,但我认为你可以为按钮重写它.. 它会类似.. 尝试将触摸侦听器中提到的步骤编写为按钮单击侦听器
      • 谢谢,我会尽力让你知道的。谢谢。
      • 嗨,我尝试了链接,但不幸的是我无法解决这个问题。你能给我一些线索来解决这个问题吗?谢谢
      【解决方案3】:

      试试这个代码放大和缩小 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));
                  }
              });
      

      希望对你有所帮助..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-20
        • 1970-01-01
        • 2023-01-02
        • 2020-01-09
        • 2012-02-21
        • 2015-02-28
        • 1970-01-01
        • 2011-06-29
        相关资源
        最近更新 更多