我有一个截屏功能,适用于我的大多数活动,但在一个活动中,我有200多个项目的列表视图,当我调用该功能时,它似乎只是挂在黑屏上,我相信这是因为它& #39;试图制作整个列表视图的屏幕截图。
我只能想到两个可能的选择,
1)如果有人知道更好的截屏方式,我基本上希望它像普通的截图一样,但我想以编程方式进行操作的原因是隐藏某些东西。
2)如果有方法从listview / adapter获取物理视图中的项目列表,那么我可以重新填充适配器,然后在我&#39之后将其设置回正常状态完成了。
谢谢,
截图代码:
private void takeScreenshot() {
Bitmap bitmap=null;
ByteArrayOutputStream stream = null;
String tempPass="";
String tempUser="";
try {
//hides private data
EditText pass = (EditText) findViewById(R.id.password);
EditText user = (EditText) findViewById(R.id.username);
tempPass = pass.getText().toString();
tempUser = user.getText().toString();
pass.setText("**************");
user.setText("**************");
// create bitmap screen capture
View v1 = getWindow().getDecorView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
//converts image to bytearray for transfering
stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
//unhides private data
pass.setText(tempPass);
user.setText(tempUser);
//sends image to ImageViewActivity
Intent intent = new Intent(MainActivity.this,ImageViewActivity.class);
intent.putExtra(EXTRA_MESSAGE,byteArray);
startActivity(intent);
Toast.makeText(getApplicationContext(), "Screenshot Successful", Toast.LENGTH_SHORT).show();
} catch (Throwable e) {
e.printStackTrace();
}
}