English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método para implementar la visualización de deslizamiento de grandes imágenes en Android

Este ejemplo ilustra el método de implementación de la visualización deslizante de grandes imágenes en la programación de Android. Lo compartimos con todos para que lo utilicen como referencia, y se detalla a continuación:

Problema:

Tengo una imagen bastante grande, por ejemplo, dos veces el tamaño de la pantalla en longitud y anchura, quiero implementar la función de mostrar primero la imagen centrada, ya que la imagen es demasiado grande, solo se puede mostrar una parte, luego se puede realizar el desplazamiento suave de la imagen a través del arrastre (sin ver las huellas de actualización de desplazamiento).

Como el mapa de Google, si se usa el control mapView, se puede arrastrar todo el mapa en la pantalla, pero debido a que la información del mapa es demasiado grande, si se arrastra demasiado rápido, la pantalla mostrará temporalmente algunas huellas de actualización (cuadrados grises y blancos).

Quiero usar mapView para cargar imágenes existentes, pero no he tenido éxito, luego también he utilizado el control Srollview y el más común imageView, pero no he tenido éxito.

Solución:

Después de buscar abundantemente, usar imageView junto con el evento onTouch puede resolverlo.

Código clave:

Los controles imageView en el archivo de diseño son los siguientes

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@"+id/img"
  android:scaleType="center"
  android:background="#fff"
  android:src="@drawable/picName"
/>

El código principal en el archivo Activity es el siguiente

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.xml_name_layout);
  final ImageView switcherView = (ImageView) this.findViewById(R.id.img);
  switcherView.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View arg0, MotionEvent event) {
      float curX, curY;
      switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
          mx = event.getX();
          my = event.getY();
          break;
        case MotionEvent.ACTION_MOVE:
          curX = event.getX();
          curY = event.getY();
          switcherView.scrollBy((int) (mx - (curX), (int) (my - curY));
          mx = curX;
          my = curY;
          break;
        case MotionEvent.ACTION_UP:
          curX = event.getX();
          curY = event.getY();
          switcherView.scrollBy((int) (mx - (curX), (int) (my - curY));
          break;
      }
      return true;
    }
  });
}

El efecto de implementación es el siguiente:

Imagen original:

Efecto en el simulador:

Los lectores interesados en más contenido relacionado con Android pueden ver la sección especial de este sitio: 'Resumen de técnicas de procesamiento de gráficos e imágenes en Android', 'Tutoriales de iniciación y avanzado de desarrollo de Android', 'Resumen de técnicas de depuración y solución de problemas comunes en Android', 'Resumen de técnicas de operaciones multimedia en Android (audio, video, grabación, etc.)', 'Resumen de uso de componentes básicos en Android', 'Resumen de técnicas de View en Android', 'Resumen de técnicas de layout en Android' y 'Resumen de uso de controles en Android'.

Espero que lo descrito en este artículo pueda ayudar a todos en el diseño de programas Android.

Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y sube por los usuarios de Internet de manera autónoma, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará