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

  • ¿Puede explicar alguien inflar método? Mayor comprensión de las vistas de Android
  • Creación eficiente de LayoutInflater
  • ¿Cuál es el uso del layoutinflator?
  • Error al inflar el fragmento del diseño android-support-v4
  • InflateException: Línea de archivo XML binario # 1: Error de inflar clase <unknown> causada por OutOfMemoryError
  • Botón de acción flotante y error de inflación de biblioteca de diseño
  • 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 hacer una vista en android con esquinas redondeadas
  • ¿Cómo usar el Porcentaje para el diseño de Android?
  • ¿Hay una manera de obtener el diseño de la actividad actual y las vistas a través de adb?
  • ¿La lógica detrás de startScroll en scroller?
  • ViewPager dentro de CoordinatorLayout cubre otras vistas en API> = 21
  • Manejo simultáneo de eventos táctiles en varias vistas en Android
  • 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.