Cómo hacer una aplicación / función algo así como ‘Capturas de pantalla de desplazamiento’ desde MIUI de Xiaomi

No sé exactamente cómo se ha implementado esta característica en MIUI. Pero la forma obvia es tomar múltiples capturas de pantalla comenzando en la parte superior hasta el final de la página, desplazándose una longitud fija cada vez y finalmente uniendo todas las capturas de pantalla en una sola imagen.

Pero el truco en este enfoque es encontrar la altura de la barra de estado y la barra de navegación para que puedan eliminarse de las capturas de pantalla intermedias. Una búsqueda rápida en Stack Overflow reveló el siguiente fragmento de código como la solución. Pero personalmente no probé estos.

// Código para obtener la altura de barra de estado y barra de título

Rect rectgle = new Rect ();
Ventana ventana = getWindow ();
window.getDecorView (). getWindowVisibleDisplayFrame (rectángulo);
int StatusBarHeight = rectgle.top;
int contentViewTop =
window.findViewById (Window.ID_ANDROID_CONTENT) .getTop ();
int TitleBarHeight = contentViewTop – StatusBarHeight;

Log.i (“*** Jorgesys ::”, “StatusBar Height =” + StatusBarHeight + “, TitleBar Height =” + TitleBarHeight);

// Código para obtener la altura de la barra de navegación

Recursos resources = context.getResources ();
int resourceId = resources.getIdentifier (“navigation_bar_height”, “dimen”, “android”);
if (resourceId> 0) {
return resources.getDimensionPixelSize (resourceId);
}
devuelve 0;

Ahora, elimine (recorte) la barra de estado de todas las capturas de pantalla excepto la superior y elimine (recorte) la barra de navegación de todas las capturas de pantalla excepto la inferior. Finalmente unir las capturas de pantalla en una sola imagen.

Costura : en lo que respecta a la costura de la captura de pantalla superpuesta, puede usar la biblioteca ImageMagick para Android.

Optimización: Bueno, este enfoque es simple pero no perfecto. La cantidad de desplazamiento cada vez sigue siendo un problema. Lo que también eleva la carga de la parte de costura.

¿Y si pudiéramos desplazarnos exactamente una página a la vez? Sí, eso es posible emulando el botón Page Up y Page Down en Android. Con este número de capturas de pantalla que se deben tomar, será mínimo y podemos usar un algoritmo de costura muy simple (por ejemplo, simplemente colocando las capturas de pantalla una tras otra después de eliminar la barra de estado y la barra de navegación) ya que no habrá imágenes superpuestas. Este enfoque reducirá significativamente la complejidad.

Problemas: Todavía hay un problema. ¿Qué sucede si el pergamino nunca termina? Tomemos el ejemplo de Facebook, el servicio de noticias nunca termina. Bueno, no puedo pensar en una solución limpia de esto en este momento. En estos casos, lo que podemos hacer es establecer un límite al número máximo de capturas de pantalla que se tomarán.

Ya hay alguna aplicación para hacer esto, de nuevo no las he probado. Un ejemplo es: scrollscreenshot

Eso es todo por ahora, espero que esto haya ayudado.