简而言之,我想为用户看到的屏幕截图,而不是我的活动。假设我的应用程序被最小化,截图是为屏幕本身拍摄的,而不是为我的应用程序拍摄的。
我在某个地方提到,自API 19或4.0 android以来,这在非根设备上是可能的,但我找不到这样做的方法。
我在互联网上尝试了很多解决方案,但都没有成功。瑞德说了很多,但什么也没发现。
我找到了这段代码,但它确实为我的应用程序(布局)截图
以下是OnCreate方法:
ImageView img;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
Button btn = FindViewById<Button>(Resource.Id.button1);
img = FindViewById<ImageView>(Resource.Id.imageView1);
btn.Click += Btn_Click;
}
public byte[] CaptureScreen()
{
var view = Window.DecorView.RootView;
view.DrawingCacheEnabled = true;
Bitmap bitmap = view.GetDrawingCache(true);
byte[] bitmapData;
using (var stream = new MemoryStream())
{
bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
bitmapData = stream.ToArray();
}
return bitmapData;
}
要在单击按钮时将其添加到imageView,请执行以下操作:
private void Btn_Click(object sender, EventArgs e)
{
Bitmap bitmap = BitmapFactory.DecodeByteArray(CaptureScreen(), 0, CaptureScreen().Length);
img.SetImageBitmap(bitmap);
}
但正如我所说:它需要一个布局截图,而不是真正的屏幕。
我试图隐藏或最小化应用程序,但什么也没发生。