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


¿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).

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?

One Solution collect form web for “¿Es posible tomar una captura de pantalla de una vista, sin mostrar la vista?”

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); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.