Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android obtiene una captura de pantalla de todos los elementos de ListView

View v = rootView.findViewById(R.id.layout1); if (v != null) { v.buildDrawingCache(); Bitmap bitmap = v.getDrawingCache(); canvas.drawBitmap(bitmap, dummyMatrix, null); v.destroyDrawingCache(); } 

Tengo este código. Pero necesito hacer una captura de pantalla de todos mis elementos ListView, pero si mis listview tienen más elementos que no son visibles en la pantalla, este código no captura cuando los elementos son mayores que el rect visible.

¿Cómo capturar mi ListView correctamente?

  • ¿Hay un repo donde puedes descargar dispositivos android virtuales?
  • Nombre del paquete variable con Maven Android Plugin
  • Obtener mensaje de error "El recurso no es público"
  • BuildConfig no se crea correctamente (Gradle Android)
  • Obtener ActionBar Título TextView con AppCompat v7 r21
  • ¿Cómo pasar un objeto personalizado en Bundle?
  • NUEVO CÓDIGO DE TRABAJO CREADO POR MÍ

     public static Bitmap getWholeListViewItemsToBitmap() { ListView listview = MyActivity.mFocusedListView; ListAdapter adapter = listview.getAdapter(); int itemscount = adapter.getCount(); int allitemsheight = 0; List<Bitmap> bmps = new ArrayList<Bitmap>(); for (int i = 0; i < itemscount; i++) { View childView = adapter.getView(i, null, listview); childView.measure(MeasureSpec.makeMeasureSpec(listview.getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight()); childView.setDrawingCacheEnabled(true); childView.buildDrawingCache(); bmps.add(childView.getDrawingCache()); allitemsheight+=childView.getMeasuredHeight(); } Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); Canvas bigcanvas = new Canvas(bigbitmap); Paint paint = new Paint(); int iHeight = 0; for (int i = 0; i < bmps.size(); i++) { Bitmap bmp = bmps.get(i); bigcanvas.drawBitmap(bmp, 0, iHeight, paint); iHeight+=bmp.getHeight(); bmp.recycle(); bmp=null; } return bigbitmap; } 

  • ¿Tiene sentido usar Guice para Android
  • Cómo obtener cuando un ImageView está completamente cargado en Android
  • Excepción con la deserialización del marco XML simple
  • Vinculación de STL a un ejecutable NDK independiente de Android
  • Espresso - Ejecutar acción falla en la actividad de pantalla completa - InjectEventSecurityException
  • ¿Tengo que declarar WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE?
  • 3 Solutions collect form web for “Android obtiene una captura de pantalla de todos los elementos de ListView”

    Código de trabajo:

     public static Bitmap getWholeListViewItemsToBitmap() { ListView listview = MyActivity.mFocusedListView; ListAdapter adapter = listview.getAdapter(); int itemscount = adapter.getCount(); int allitemsheight = 0; List<Bitmap> bmps = new ArrayList<Bitmap>(); for (int i = 0; i < itemscount; i++) { View childView = adapter.getView(i, null, listview); childView.measure(MeasureSpec.makeMeasureSpec(listview.getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight()); childView.setDrawingCacheEnabled(true); childView.buildDrawingCache(); bmps.add(childView.getDrawingCache()); allitemsheight+=childView.getMeasuredHeight(); } Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(), allitemsheight, Bitmap.Config.ARGB_8888); Canvas bigcanvas = new Canvas(bigbitmap); Paint paint = new Paint(); int iHeight = 0; for (int i = 0; i < bmps.size(); i++) { Bitmap bmp = bmps.get(i); bigcanvas.drawBitmap(bmp, 0, iHeight, paint); iHeight+=bmp.getHeight(); bmp.recycle(); bmp=null; } return bigbitmap; } 

    Si bien es imposible hacer una captura de pantalla del contenido aún no procesado (como elementos fuera de pantalla del ListView), puede realizar varias capturas de pantalla, desplazar el contenido entre cada toma y, a continuación, unir imágenes. Aquí hay una herramienta que puede automatizar esto para usted: https://github.com/PGSSoft/scrollscreenshot

    ilustración

    Descargo de responsabilidad: Soy autor de esta herramienta, fue publicada por mi empleador . Las peticiones de características son bienvenidas.

    Utilice esta función para obtener el mapa de bits de su vista de lista

     public Bitmap getBitmapFromView(View view) { Bitmap returnedBitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight() , Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(returnedBitmap); Drawable bgDrawable = view.getBackground(); if (bgDrawable != null) bgDrawable.draw(canvas); else canvas.drawColor(Color.WHITE); view.draw(canvas); return returnedBitmap; } 

    Utilizar esto como

     Bitmap b = getBitmapFromView(your listview object here); 

    Y utilizar este mapa de bits como desee

    Espero ayuda

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.