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?

  • El método onPreferenceChange no se llama cuando los cambios de Listpreferences
  • El dispositivo Android aparece sin conexión a pesar de conectar USB y activar la depuración USB
  • Google Analytics v4: los datos no aparecen en el panel de control
  • Disposición relativa de Android con ancho de botón utilizando el peso
  • Estilos / atributos de divisor predeterminados de ListView de Android
  • Mostrar el teclado automáticamente
  • 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; } 

  • GridView VS GridLayout en Aplicaciones de Android
  • Tutorial NFC para Android que no sea API demo
  • Cómo inhabilitar el registro de eventos de Facebook SDK?
  • Gradle está emitiendo un error "No se pudo crear el complemento de tipo 'AppPlugin'"
  • Calcular la distancia real recorrida por el móvil
  • Android: ¿Cómo detectar el doble toque?
  • 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.