[预备知识]
Android的布局文件中,若一个View未设置属性android:background,则其背景为透明,即在手机屏幕上将该View下方的View呈现为背景。
例如下面的布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#efcd74"> <TextView android:id="@+id/text_view" android:textSize="60sp" android:textColor="@android:color/black" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test"/> </LinearLayout>
其中,#efcd74为土黄色,其显示效果为:
从上图可见,text_view未设置属性android:background,则其背景为其parent view,为一个土黄色矩形。
[问]
执行下述代码:
{
……
View testView=(View)findViewById(R.id.test_view);
Bitmap bitmap=testView.getDrawingCache();
将bitmap保存为图片文件;
}
用文件浏览器打开此图片文件,则能否看到下图所示的图片?
[答]
不能。
[结论]
View的方法getDrawingCache()得到的图像有时与用户看到的不同,它仅仅是View本身的图像,透明之处将保持原样,不会显示View下方的图像。
而用户在屏幕上看到的View,其透明部分会呈现View下方的View。
View的方法getDrawingCache()得到的图像应该是下面这样的:
可以看出,背景是透明的。