Android - Zoom imagenes

   
Vista:

Zoom imagenes

Publicado por Tony (5 intervenciones) el 24/06/2016 16:40:57
Hola, creo que es una duda muy básica pero a pesar de ello no se hacerlo :( .Mi duda es la siguiente, quiero en una imageview poder hacer zoom y ampliarla como si se tratase de una fotografía de la galería. A parte de esto me gustaria saber si teniendo varias imageview ocultas ese zoom que realizas si se podría aplicar a estas imágenes ocultas para que a la hora de mostrarlas estén es escala.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Zoom imagenes

Publicado por Carlod Sánchez (4 intervenciones) el 27/06/2016 04:34:46
Debes usar pinch to zoom, usando la libreria SubsamplingScaleImageView porque soporta imágenes muy grandes.
Librería: https://github.com/davemorrissey/sub...ale-image-view

Puedes utilizar esta clase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
 
public class Zoom extends View {
 
    private Drawable image;
    ImageButton img,img1;
    private int zoomControler=20;
 
    public Zoom(Context context){
            super(context);
 
            image=context.getResources().getDrawable(R.drawable.j);
            //image=context.getResources().getDrawable(R.drawable.icon);
 
            setFocusable(true);
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
 
        //here u can control the width and height of the images........ this line is very important
        image.setBounds((getWidth()/2)-zoomControler, (getHeight()/2)-zoomControler, (getWidth()/2)+zoomControler, (getHeight()/2)+zoomControler);
        image.draw(canvas);
    }
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
 
            if(keyCode==KeyEvent.KEYCODE_DPAD_UP){
                    // zoom in
                    zoomControler+=10;
            }
            if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN){
                    // zoom out
                    zoomControler-=10;
            }
            if(zoomControler<10){
                    zoomControler=10;
            }
 
            invalidate();
            return true;
    }
}

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Zoom imagenes

Publicado por Jose Antonio Perez Torales (7 intervenciones) el 05/08/2016 01:52:19
Checa este codigo espero que te sirva

Código

Clase Principal


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package Clases;
 
import javax.swing.JApplet;
 
public class Principal extends JApplet {
 
 panelDibujo pd;
 
 public void init(){
  pd=new panelDibujo();
  add(pd);
 }
}
 
Clase panelDibujo
 
package Clases;
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
 
public class panelDibujo extends JPanel implements MouseMotionListener,MouseWheelListener{
 
 ImageIcon imagen;
 int x=0;
 int y=0;
 double zoom=1;
 
 public panelDibujo(){
  imagen=new ImageIcon(getClass().getResource("../Imagenes/foto.jpg"));
  addMouseMotionListener(this);
  addMouseWheelListener(this);
 }
 
 public void paintComponent(Graphics g){
  super.paintComponents(g);
  Graphics2D g2d=(Graphics2D)g;
  g2d.scale(zoom, zoom);
  g2d.drawImage(imagen.getImage(), x, y, this);
 
 }
 
 @Override
 public void mouseDragged(MouseEvent e) {
 
 }
 
 @Override
 public void mouseMoved(MouseEvent e) {
  if(x>-(imagen.getIconWidth()-this.getWidth())){
   if(e.getX()>(this.getWidth()-50)){
    x-=10;
    repaint();
   }
  }
  if(x<0){
   if(e.getX()>0 && e.getX()<50){
    x+=10;
    repaint();
   }
  }
  if(y<0){
   if(e.getY()>0 && e.getY()<50){
    y+=10;
    repaint();
   }
  }
  if(y>-(imagen.getIconHeight()-this.getHeight())){
   if(e.getY()>(this.getHeight()-50)){
    y-=10;
    repaint();
   }
  }
 
 }
 
 @Override
 public void mouseWheelMoved(MouseWheelEvent e) {
  if(e.getWheelRotation()<0){
   zoom+=-e.getUnitsToScroll()*0.3;
  }else{
   if(zoom>1){
    zoom-=e.getUnitsToScroll()*0.3;
   }
  }
  repaint();
 }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar