Captura toda la vista de desplazamiento más grande que la pantalla
El principal problema es guardar toda la vista de desplazamiento como una imagen de mapa de bits en lugar de sólo lo que aparece en la pantalla. ¿Hay una manera de guardar toda la vista de desplazamiento, y si es así cómo?
- Android ScrollView puede alojar sólo un hijo directo
- Android WebView: deshabilitar el degradado del borde amarillo de desplazamiento
- ScrollView no se desplaza a la parte inferior
- Ajusta scrollview cuando el teclado está hacia arriba
- ViewPager en ScrollView
- Android WebView dentro de ScrollView solo desplaza scrollview
- Desplazamiento de TextView en una ScrollView a una subcadena de texto específica
- Adición dinámica de vistas a RelativeLayout dentro de ScrollView
- Cómo agregar ScrollView a GLSurfaceview en Opengl ES2.0 en Android
- ¿Podemos usar un ScrollView dentro de un LinearLayout?
- Android RelativeLayout alinear preocupación
- ¿Cómo puedo hacer que mi cuadro de diálogo de Android sea de pantalla completa?
- Desplazar una vista / disposición oculta desde abajo
Haga un RelativeLayout o LinearLayout en su ScrollView para obtener Bitmap desde Layout.
Organiza de esta manera:
public class ActivityA extends Activity { LinearLayout PP_Ll; Button btn_capture; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PP_Ll = (RelativeLayout) findViewById(R.id.PP_Ll); Button btn_capture= (Button) findViewById(R.id.btn_capture); btn_capture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = takeScreenshot(); saveBitmap(bitmap); } }); public Bitmap takeScreenshot() { View rootView = getWindow().getDecorView().findViewById(R.id.PP_Ll); rootView.setDrawingCacheEnabled(true); return rootView.getDrawingCache(); } public void saveBitmap(Bitmap bitmap) { String root = Environment.getExternalStorageDirectory().toString(); File newDir = new File(root + "/Folder"); newDir.mkdirs(); Random gen = new Random(); int n = 10000; n = gen.nextInt(n); String fotoname = "Photo-" + n + ".jpg"; File file = new File(newDir, fotoname); if (file.exists()) file.delete(); try { FileOutputStream fos = new FileOutputStream(file); bitmap.compress(CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); Toast.makeText(getApplicationContext(), "Saved in folder: 'Folder'", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { Log.e("GREC", e.getMessage(), e); } catch (IOException e) { Log.e("GREC", e.getMessage(), e); } } }}
Su RelativeLayout se guardará en cierto directorio como BitMap. Buena suerte.
Nota: Debe insertar sus vistas de imagen, vistas de texto, etc. en su archivo RelativeLayout en .xml, que todos pueden ver en la captura de pantalla.
Intente debajo del código: –
public static Bitmap loadBitmapFromView(View v, int width, int height) { Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); v.draw(c); return b; }
Ver abajo enlace
Tomar una captura de pantalla de una vista completa
Posible solución, puede crear un emulador de un tamaño de pantalla más grande tal vez 10 pulgadas, y ejecutar su aplicación en él, Si su listview se ajusta a la pantalla, puede tomar una captura de pantalla de la misma.
- Excepción OutOfMemory: ¿La compresión de imágenes reducirá el tamaño del montón?
- Html tipo de entrada = número no permite puntos decimales en ciertos droides