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:
¡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:
¡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.
.