Как увеличить ImageView при нажатии кнопки в Android

У меня есть требование, где у меня есть 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;
        }
    }
}

Заранее спасибо.

3 ответа

Попробуйте использовать zoomcontrol, доступный на расширенной вкладке упражнения xml

Базовое руководство по анимации доступно на официальном сайте разработчика:- Нажмите здесь

Обновить:-

эти ссылки не совсем для Android, но стоит посмотреть:-

http://www.anddev.org/large_image_scrolling_using_low_level_touch_events-t11182.html

масштаб изображения и рычажные-большие-изображения-с-Google-карте-интерфейс

фото-зум

Попробуйте этот код для увеличения и уменьшения масштаба 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));
            }
        });

Я желаю, чтобы это помогло вам..

Другие вопросы по тегам