我正在尝试截取特定布局的屏幕截图,但问题是,屏幕截图随操作栏一起出现,并且上面还有一个蓝色补丁,虽然在截屏时我隐藏了操作栏但仍然存在但是它仍然存在对于fab按钮工作正常。
我提到下面的代码 -
try {
actionBar.hide();
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + "Hi" + ".jpg";
fabSpeedDial.setVisibility(View.INVISIBLE);
// create bitmap screen capture
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
outputStream.flush();
outputStream.close();
fabSpeedDial.setVisibility(View.VISIBLE);
actionBar.show();
return true;
} catch (Throwable e) {
e.printStackTrace();
}
Xml代码 -
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ragnar.useless.MainActivity"
android:background="#ff4343"
android:id="@+id/l1">
<ImageView
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_width="180dp"
android:id="@+id/img"
android:layout_height="180dp"
android:src="@drawable/panda"/>
<io.github.yavski.fabspeeddial.FabSpeedDial
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom|end"
app:fabGravity="bottom_end"
app:fabMenu="@menu/main_menu"
android:id="@+id/fabspeed"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
app:miniFabDrawableTint="?attr/colorPrimaryDark"
app:miniFabTitleTextColor="?attr/colorPrimaryDark"
>
</io.github.yavski.fabspeeddial.FabSpeedDial>
</RelativeLayout>
我想要的是Relativelayout的截图,但没有获得动作栏和上面的bluepatch。 任何建议将不胜感激,我也看到了关于stackoverflow的类似问题,但无法理解其答案,所以请解释你提供的内容。提前了解你。
答案 0 :(得分:0)
这是问题所在:
View v1 = getWindow().getDecorView().getRootView();
您正在截取根视图的屏幕截图。 您必须在RelativeLayout上放置一个ID,这是您的活动布局的根,如下所示:
android:id="@+id/myview"
然后用我提到的第一行替换:
View v1 = findViewById(R.id.myview);
您将获得布局的位图,没有操作栏和上面的蓝色条(这是状态栏的背景)。 让我知道它是否适合你!