¿Es posible tomar una captura de pantalla de una vista, sin mostrar la vista?
Pregunta corta:
Supongamos que tengo algún tipo de archivo de diseño y lo hincho (o utilizar los CTOR normales en el código).
- Archivo de 0 bytes aparece al capturar la pantalla por screencap
- Evitar la captura de pantalla en las aplicaciones de Android
- Toma de pantalla de la pantalla actual
- Captura de pantalla en android
- Captura de pantalla programática de una webview con elementos flash
En lugar de mostrar la vista inflada, deseo tomar una "captura de pantalla" (un mapa de bits) de cómo se vería con algunas limitaciones (de ancho y altura dados, incluso más grande que la pantalla).
No deseo añadir la vista a ningún lugar en la pantalla, pero sólo la mantengo para este propósito y tal vez agregarla más tarde.
Tal cosa podría ser útil para manipulaciones fáciles de cómo colocar las cosas. Por ejemplo, podría utilizar un diseño que una imagen se pondría dentro de él para que tenga un marco alrededor de él.
¿Es posible tal cosa? ¿Si es así, cómo?
- ¿Cómo tomar una captura de pantalla de gridview incluyendo todos los elementos de la cuadrícula?
- Android Captura de pantalla o hace video de imágenes
- Generar capturas de pantalla de iPhone y iPad incluyendo el marco del dispositivo
- ¿Toma una captura de pantalla parcial en Android?
- Cómo tomar capturas de pantalla en Android 2.3.3 sin root?
- Cómo tomar captura de pantalla en el emulador de Android
- Recortar programaticamente la captura de pantalla de Android?
- Desactivar captura de pantalla en mi aplicación Android
OK, he encontrado una manera posible de hacerlo, basado en este enlace :
public static Bitmap drawToBitmap(Context context,final int layoutResId, final int width,final int height) { final Bitmap bmp = Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bmp); final LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(layoutResId,null); layout.setDrawingCacheEnabled(true); layout.measure( MeasureSpec.makeMeasureSpec(canvas.getWidth(),MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(canvas.getHeight(),MeasureSpec.EXACTLY)); layout.layout(0,0,layout.getMeasuredWidth(),layout.getMeasuredHeight()); canvas.drawBitmap(layout.getDrawingCache(),0,0,new Paint()); return bmp; }
Ejemplo de uso:
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView iv = (ImageView)findViewById(R.id.image); final DisplayMetrics metrics = getResources().getDisplayMetrics(); final Bitmap b = drawToBitmap(this,R.layout.test, metrics.widthPixels, metrics.heightPixels); iv.setImageBitmap(b); } }
- No recibo la actualización de 'com.google.android.gms: play-services-wallet: 8.4.0' para los servicios de reproducción de Google en sdk
- Uso del icono en la parte superior izquierda de ActionBarSherlock para navegar