Punto de conocimiento de Android: el deslizamiento obtiene ancho y alto
Primero proporcione un enlace al conocimiento de Android: tabla de contenido y luego vaya al grano.
De hecho, no todo el mundo puede utilizar este blog para hablar. Después de todo, muchas veces, solo necesitamos mostrar la imagen sin conocer el ancho y el alto de la imagen. A veces, solo necesitamos conocer el ancho y el alto de la pantalla (es decir, el ancho y el alto de ImageView) y no necesitamos conocer el tamaño real del recurso de imagen.
Pero la demanda de Qianqian es absolutamente enorme. Con el cerebro de un programador, ¿cómo te imaginas el tamaño del cerebro del producto? Estoy satisfaciendo una necesidad aquí, que es anotar una imagen ampliable con un ícono (similar al anotador en un mapa). Eso no es todo. Después de todo, en el control de zoom de la foto encontrada PhotoView, después de hacer clic en la imagen, hay una devolución de llamada de las coordenadas porcentuales del punto de clic en toda la imagen. Sin embargo, es fácil obtener el mismo punto en la imagen a través de la tasa de aprobación de múltiples terminales y devolver el ícono correspondiente (de ninguna manera, ¿quién me pidió que lo encontrara convenientemente para calcular el porcentaje)? Por lo tanto, el lado web dio prioridad a esta parte de la función y utilizó las coordenadas específicas de la imagen original. De esta manera, mi plan de porcentaje naturalmente falló y tuve que pensar en una manera de ser más específico.
Por lo tanto, obtener el tamaño original de la imagen es un paso imprescindible. Acabo de buscar en Baidu y descubrí que el método de Android de Wang Ke_Jin para obtener el ancho y alto de la imagen es:
No lo he probado personalmente aquí, por lo que no debería haber ningún problema, pero desafortunadamente nuestras necesidades son imágenes en línea. Se mide en la parte superior, por lo que no se puede utilizar este método, pero si hay otras imágenes locales similares, también puedes probarlo. La solución que encontré antes es:
En primer lugar, el método anterior puede medir el tamaño de la imagen, pero hay un pequeño problema, es decir, si desea calcular el ancho y el alto de Drawable. , debe esperar hasta que se cargue la imagen. Intente usar view.post() para cargar el componente de escucha, pero no puede obtener el ancho y el alto del Drawable cada vez, por lo que la solución original es escribir un temporizador de dos segundos y mídalo cada 50 milisegundos hasta obtener el valor. Esta solución es bastante estúpida y consume muchos recursos innecesarios.
Afortunadamente, Dios dio sus frutos y finalmente encontró una manera de obtener el ancho y el alto de la imagen a través de Glide:
De esta manera, podemos inyectar la imagen de la red en el correspondiente Componente de imagen en Glide Cuando, el mapa de bits de la imagen se obtiene a través de la devolución de llamada, y luego el ancho y el alto de la imagen se obtienen a través del mapa de bits. Pero cabe señalar que el tipo genérico del mapa de bits debe configurarse manualmente.
Además, SimpleTarget ahora está obsoleto y no se ha encontrado. He buscado alternativas a SimpleTarget y hay algunas sugerencias para usar BitmapImageViewTarget, pero aquí están los resultados reales de la prueba.
Enlace de imagen:
Baidu Pictures-Landscape
Resultados de la medición:
Información de la imagen:
Si no Lo usé mal. BitmapImageViewTarget no puede reemplazar a SimpleTarget para medir el ancho y alto originales de la imagen.