天天看點

如何将目前界面的可視化元件以同樣的相對位置和大小儲存在png圖像檔案夾中?(如何将目前視窗的背......

public class AndrodTActivity extends Activity implements OnClickListener {

 View v;

 @Override

 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  v = findViewById(R.id.btn);

  v.setOnClickListener(this);

// 從上到下的漸變色,上方藍色,下方綠色

  // 将應用程式的背景色設定成漸變色

  GradientDrawable gradientDrawable = new GradientDrawable(Orientation.TOP_BOTTOM, new int[] { Color.BLUE, Color.GREEN });

  getWindow().setBackgroundDrawable(gradientDrawable);  }

 @Override

 public void onClick(View v) {

  // 點選截屏按鈕,進行截屏操作

  View view = getLayoutInflater().inflate(R.layout.main, null);//此處main布局是LinearLayout 若Relativelayout 會報錯

   //打開圖像緩存

  view.setDrawingCacheEnabled(true);

  //必須調用measure和layout方法才能儲存可視元件的截圖到png圖像檔案

  view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

  //發送位置和尺寸到view及所有的子View

  view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

  try {

   // 擷取可視元件的截圖

   Bitmap drawingCache = view.getDrawingCache();

   File file = new File("/emmc/che");

   if (!file.exists())

    file.mkdirs();

   FileOutputStream out = new FileOutputStream("/emmc/che/abc.png");

   drawingCache.compress(CompressFormat.PNG, 100, out);

   out.close();

  } catch (FileNotFoundException e) {

   e.printStackTrace();

  } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

 }

}

版權聲明:本文為CSDN部落客「weixin_34008784」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34008784/article/details/92006034