创建ScreenShot类来进行截图处理,并返回保存的文件名
public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 private static Bitmap takeScreenShot(Activity activity) { // View是你需要截图的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); // 获取状态栏高度 Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; Log.i("TAG", "" + statusBarHeight); // 获取屏幕长和高 int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay() .getHeight(); // 去掉标题栏 // Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455); Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } // 保存到sdcard private static void savePic(Bitmap b, String strFileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } // 程序入口 public static String shoot(Activity a) { String strFileName = "sdcard/" + String.valueOf(System.currentTimeMillis()) + ".png"; ScreenShot.savePic(ScreenShot.takeScreenShot(a), strFileName); return strFileName; } } |
在需要使用的Activity中调用shoot方法,并使用Intent来分享出去
public class MainActivity extends Activity { private Button btn; private String image; private Button btnShare; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { image = ScreenShot.shoot(MainActivity.this); } }); btnShare = (Button) findViewById(R.id.btn_share); btnShare.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_SEND); File file = new File(image); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType("image/jpeg"); Intent chooser = Intent.createChooser(intent, "Share screen shot"); if(intent.resolveActivity(getPackageManager()) != null){ startActivity(chooser); } } }); } } |
- 本文固定链接: https://freemanapp.com/zh/?p=69
- 转载请注明: freeman 于 FreemanApp 发表