El Arsenal de Android: vistas de imágenes

ZoomHelper hará que cualquier vista se pueda ampliar al igual que el pellizco de zoom de Instagram. ?

Instalación

ZoomHelper está disponible en JCenter, por lo que solo necesita agregarlo como una dependencia (módulo Gradle)

Implementación de Gradle

    & # 39;  com.aghajari .zoomhelper : ZoomHelper: 1.0.1  & # 39; [19659007] Maven [19659008] < adicción >
 < groupId > com.aghajari.zoomhelper </  groupId >
 < artifactId > ZoomHelper </  artifactId >
 < versión > 1.0.1 </  versión >
 < tipo > pom </  tipo >
</  dependencia > 

Uso (Kotlin)

sobrescribir solo dispatchTouchEvent en su actividad y pasar todos los eventos táctiles a ZoomHelper!

  anular    diversión    dispatchTouchEvent  ( ev :    MotionEvent ?) :    Booleano  {
     return    ZoomHelper  .getInstance (). DispatchTouchEvent (ev  !!   este )  ||    super  .dispatchTouchEvent (ev)
}
            

Y establezca Ver como ampliable:

  ZoomHelper  .addZoomableView (ver)
  //  ZoomHelper.addZoomableView (vista, etiqueta) 

O crea una vista ampliable con el diseño xml:

  < ImageView 
          android :  id  =   " @ + id / imageView  " 
          Android :  layout_width  = "  wrap_content  " 
          Android :  layout_height  =   " wrap_content " >

        < etiqueta    android :  id  =   " @ + id / zoomable "   android : [19659025] valor  =   " ZoomableViewTag "  />
</  ImageView > 

Nota: solo se usa en API nivel 21 y superior

¡Y hemos terminado! ?

Uso (Java)

Instalación: ¡debe agregar kotlin como dependencia! (Módulo Gradle)

  implementación   & # 39;  com.aghajari.zoomhelper: ZoomHelper: 1.0.1  & # 39; 
implementación   & # 39;  org.jetbrains.kotlin: kotlin-stdlib: $ kotlinVersion  & # 39;    //  1.4.0-rc  

y sobrescriba solo dispatchTouchEvent en su actividad y transmita todos los eventos táctiles a ZoomHelper!

  @Override 
  public    boolean  dispatchTouchEvent ( MotionEvent  ev) {
  volver    ZoomHelper .   Companion .  getInstance () .  dispatchTouchEvent (ev,  este )  ||    Super   dispatchTouchEvent (ev).;
}
            

Y establezca Ver como ampliable:

  ZoomHelper .   Companion .  addZoomableView (ver);
  //  ZoomHelper.Companion.addZoomableView (vista, etiqueta); 

O crea una vista ampliable con el diseño xml:

  < ImageView 
          android :  id  =   " @ + id / imageView  " 
          Android :  layout_width  = "  wrap_content  " 
          Android :  layout_height  =   " wrap_content " >

        < etiqueta    android :  id  =   " @ + id / zoomable "   android : [19659025] valor  =   " ZoomableViewTag "  />
</  ImageView > 

Nota: solo se usa en API nivel 21 y superior

¡Y hemos terminado! ?

Personalización

Kotlin:

  ZoomHelper  .getInstance (). MinScale  =    1f 
  ZoomHelper  .getInstance (). ) .maxScale  =    Float .  MAX_VALUE 
  ZoomHelper  .getInstance (). shadowColor  =    Color .  NEGRO [19659101] ZoomHelper  .getInstance (). MaxShadowAlpha  =    0.6f 
  ZoomHelper  .getInstance (). ShadowAlphaFactory  =    4 
  ZoomHelper  .get () .dismissDuration  =    200 
  ZoomHelper  .getInstance (). layoutTheme  =    android.R.style.Theme_Translucent_NoTitleBar_Fullscreen 
  ZoomHelper]. .isEnabled  =    true  

Java:

  ZoomHelper  zoomHelper  =    ZoomHelper .   Companion [19659014].  getInstance ();
. ZoomHelper    setMinScale ( 1f );
zoomHelper    setMaxScale ( Float [19659121]   MAX_VALUE .).;
zoomHelper    setShadowColor ( color [19659121]   BLACK .).;
. ZoomHelper    setMaxShadowAlpha ( 0.6f );
zoomHelper    setShadowAlphaFactory ( 4 ).;
zoomHelper    setDismissDuration ( 200 ).;
. ZoomHelper    setLayoutTheme ( Android    R [19659014] [19659061]  estilo    Theme_Translucent_NoTitleBar_Fullscreen  ...);
zoomHelper .  setEnabled ( true ); 

Puede desactivar una vista ampliable con este código:

  ZoomHelper . removeZoomableView (view) 

O ignore una View o ViewGroup y todos sus elementos secundarios:

  ZoomHelper  .skipLayout (view,  true ) 

También puede deshabilitar ZoomHelper usando este código :

  ZoomHelper  .getInstance (). isEnabled  =    false  

Compruebe que el diseño se está ampliando actualmente:

  if  ( ZoomHelper  .getInstance (). IsZooming) 

Oyentes:

Puede agregar devoluciones de llamada para escuchar eventos específicos.

  ZoomHelper  .getInstance (). AddOnZoomStateChangedListener ( objeto  : [19659013] ZoomHelper.OnZoomStateChangedListener  {
    anular la diversión enZoomStateChanged (zoomHelper :    ZoomHelper  zoomableView :    View  isZooming :    Boolean ) {
        Toast  .makeText (zoomableView.context, if (isZooming) " Zoom  comenzó" else " Zoom  terminado",  Toast .  LENGTH_SHORT ). espectáculo ()
         //  también puede obtener la etiqueta ZoomableView 
       tag val  =    ZoomHelper  .getZoomableViewTag (zoomableView)
    }
})

 ZoomHelper  .getInstance () addOnZoomScaleChangedListener ( objeto [19659012]:. [19659013] ZoomHelper.OnZoomScaleChangedListener  {
    anular la diversión enZoomScaleChanged (zoomHelper :    ZoomHelper  zoomableView :    Ver  escala :    Float  evento [1945901320]: [1965]?) {
         //  se invoca cuando se cambia la escala de zoom 
    }
})

 ZoomHelper  .getInstance () addOnZoomLayoutCreatorListener ( objeto [19659012]:. [19659013] ZoomHelper.OnZoomLayoutCreatorListener  {
    anular la diversión enZoomLayoutCreated (zoomHelper :    ZoomHelper  zoomableView :    Ver  zoomLayout :    FrameLayout ) {
         //  invocado cuando se creó el diseño de zoom (se inició el zoom) 
    }
}) 

Los oyentes de vista predeterminados (onClick, onLongClick, onTouch) también funcionarán.

Autor

Amir Hossein Aghajari

Inspirado en la biblioteca ImageZoom.

  Copyright 2020 Amir Hossein Aghajari
Con licencia de Apache License, Versión 2.0 (la "Licencia");
no puede utilizar este archivo excepto de acuerdo con la licencia.
Puede obtener una copia de la licencia en

   http://www.apache.org/licenses/LICENSE-2.0

A menos que lo exija la ley aplicable o se acuerde por escrito, el software
distribuido bajo la Licencia se distribuye "TAL CUAL",
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.
Consulte la licencia para el idioma específico que rige los permisos e
limitaciones de la licencia.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *