android 特定局域截图,Android:以编程方式截取所选区域的屏幕截图

我的代码如下:

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button upload = (Button) findViewById(R.id.screeshotdButton);

upload.setOnClickListener(new Button.OnClickListener() {

@Override

public void onClick(View v) {

folderCheck();

}

});

}

private void folderCheck(){

File folder = new File(Environment.getExternalStorageDirectory() + "/cloze_screenshots");

boolean success = true;

// If the folder cloze not exist, create one

if (!folder.exists()) {

success = folder.mkdir();

}else{

ScreenShot();

}

// If mkdir successful

if (success) {

ScreenShot();

} else {

Log.e("mkdir_fail","QQ");

}

}

private void ScreenShot(){

String filePath = Environment.getExternalStorageDirectory()+ "/cloze_screenshots/temp.png";

// create bitmap screen capture

Bitmap bitmap;

View v1 = getWindow().getDecorView().getRootView();

v1.setDrawingCacheEnabled(true);

bitmap = Bitmap.createBitmap(v1.getDrawingCache());

v1.setDrawingCacheEnabled(false);

OutputStream fout = null;

File imageFile = new File(filePath);

try {

fout = new FileOutputStream(imageFile);

bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);

fout.flush();

fout.close();

Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

此代码可以采用全屏截图,但我想在按下按钮后以编程方式在特定区域(例如,屏幕上的左侧块)上截取屏幕截图.

任何代码或建议将不胜感激.

解决方法:

您可以将内容包装在布局中,例如LinearLayout,并按照上面的代码使用包装布局上的方法进行截屏.

Bitmap bitmap;

ViewGroup v1 = findViewById(R.id.layout_id);

v1.setDrawingCacheEnabled(true);

bitmap = Bitmap.createBitmap(v1.getDrawingCache());

v1.setDrawingCacheEnabled(false);

标签:android,screenshot

来源: https://codeday.me/bug/20191008/1872801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值