为什么 android:FLAG_BLUR_BEHIND 在我的新活动中创建渐变背景而不是模糊窗口?
我有两项活动。一个应该在另一个面前变得模糊。
背景活动有几个 ImageView,它们被设置为延伸到屏幕大部分区域且高度为 10dip 的细渐变。当我开始第二个活动时,它将背景设置为占据整个窗口空间的渐变,也就是说,它的高度和宽度似乎都是 fill_parent 的。如果我注释掉 ImageView,那么它就会模糊并且看起来像预期的那样。
有什么想法吗?
这是进行模糊处理的代码。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
public class TransluscentBlurSummaryB extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
getWindow().getAttributes().dimAmount = 0.5f;
getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
setContentView(R.layout.sheetbdetails);
OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
TransluscentBlurSummaryB.this.finish();
}
};
findViewById(R.id.sheetbdetailstable).setOnClickListener(clickListener);
}
}
这是带有 ImageView 渐变的布局。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/summarysparent" >
<!-- view1 goes on top -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button android:layout_height="wrap_content"
android:id="@+id/ButtonBack"
android:layout_width="wrap_content"
android:text="Back"
android:width="100dp"></Button>
<Button android:layout_height="wrap_content"
android:id="@+id/ButtonNext"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:text="Start Over"
android:width="100dp"></Button>
</RelativeLayout>
<TextView
android:id="@+id/view1"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="10pt" android:text="Summary"/>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/summaryscrollview"
android:layout_below="@+id/view1"
android:layout_above="@+id/view2">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/summarydetails" >
<!-- view2 goes on the bottom -->
<TextView android:id="@+id/textview2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/view1"
android:layout_centerHorizontal="true"
android:text="Recommended Child Support Order"
android:layout_marginTop="10dip" />
<ImageView
android:id="@+id/horizontalLine1"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview2"
android:layout_marginTop="10dip"
/>
<TextView android:id="@+id/textview3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine1"
android:layout_centerHorizontal="true"
android:text="You"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview10"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:layout_below="@+id/textview3"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip"
android:gravity="center_horizontal" />
<ImageView
android:id="@+id/horizontalLine2"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview10"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview4"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine2"
android:layout_centerHorizontal="true"
android:text="Other Parent"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview11"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:layout_below="@+id/textview4"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip"
android:text="$536.18"
android:gravity="center_horizontal" />
<ImageView
android:id="@+id/horizontalLine3"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview11"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview5"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine3"
android:layout_centerHorizontal="true"
android:text="Calculation Details"
android:layout_marginTop="15dip" />
<ImageView android:id="@+id/infoButton"
android:src="@drawable/ic_menu_info_details"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine3"
android:layout_toRightOf="@+id/textview5"
android:clickable="true"
/>
<ImageView
android:id="@+id/horizontalLine4"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview5"
android:layout_marginTop="18dip" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
渐变绘制是这样的。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#FFFFFF" android:centerColor="#000000" android:endColor="#FFFFFF"
android:angle="270"/>
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
这是在顶部进行模糊处理的活动的布局。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sheetbdetails"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" >
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
android:shrinkColumns="0"
android:id="@+id/sheetbdetailstable" >
<TableRow>
<TextView
android:padding="3dip" />
<TextView
android:text="You"
android:padding="3dip" />
<TextView
android:text="@string/otherparent"
android:padding="3dip" />
<TextView
android:text="Combined"
android:padding="3dip" />
</TableRow>
</TableLayout>
</ScrollView>
透明窗口的主题来自 apidemos 中的 styles.xml,使用 @style/Theme.Transparent。
I've got two activities. One is supposed to be a blur in front of the other.
The background activity has several ImageViews which are set up as thin gradients extending across most of the screen and 10dip high. When I start the second activity it sets the background as a gradient occupying the entire window space, that is it appears to be fill_parent'd for both height and width. If I comment out the ImageViews then it blurs and looks as expected.
Any thoughts?
Here's the code doing the blur.
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
public class TransluscentBlurSummaryB extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
getWindow().getAttributes().dimAmount = 0.5f;
getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
setContentView(R.layout.sheetbdetails);
OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
TransluscentBlurSummaryB.this.finish();
}
};
findViewById(R.id.sheetbdetailstable).setOnClickListener(clickListener);
}
}
And here's the layout with the ImageView gradients.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/summarysparent" >
<!-- view1 goes on top -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/view2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button android:layout_height="wrap_content"
android:id="@+id/ButtonBack"
android:layout_width="wrap_content"
android:text="Back"
android:width="100dp"></Button>
<Button android:layout_height="wrap_content"
android:id="@+id/ButtonNext"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:text="Start Over"
android:width="100dp"></Button>
</RelativeLayout>
<TextView
android:id="@+id/view1"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="10pt" android:text="Summary"/>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/summaryscrollview"
android:layout_below="@+id/view1"
android:layout_above="@+id/view2">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/summarydetails" >
<!-- view2 goes on the bottom -->
<TextView android:id="@+id/textview2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/view1"
android:layout_centerHorizontal="true"
android:text="Recommended Child Support Order"
android:layout_marginTop="10dip" />
<ImageView
android:id="@+id/horizontalLine1"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview2"
android:layout_marginTop="10dip"
/>
<TextView android:id="@+id/textview3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine1"
android:layout_centerHorizontal="true"
android:text="You"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview10"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:layout_below="@+id/textview3"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip"
android:gravity="center_horizontal" />
<ImageView
android:id="@+id/horizontalLine2"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview10"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview4"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine2"
android:layout_centerHorizontal="true"
android:text="Other Parent"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview11"
android:layout_height="wrap_content"
android:layout_width="150dp"
android:layout_below="@+id/textview4"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip"
android:text="$536.18"
android:gravity="center_horizontal" />
<ImageView
android:id="@+id/horizontalLine3"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview11"
android:layout_marginTop="10dip" />
<TextView android:id="@+id/textview5"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine3"
android:layout_centerHorizontal="true"
android:text="Calculation Details"
android:layout_marginTop="15dip" />
<ImageView android:id="@+id/infoButton"
android:src="@drawable/ic_menu_info_details"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@+id/horizontalLine3"
android:layout_toRightOf="@+id/textview5"
android:clickable="true"
/>
<ImageView
android:id="@+id/horizontalLine4"
android:layout_width="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_height="10dip"
android:src="@drawable/black_white_gradient"
android:layout_below="@+id/textview5"
android:layout_marginTop="18dip" />
</RelativeLayout>
</ScrollView>
</RelativeLayout>
The gradient drawable is this.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#FFFFFF" android:centerColor="#000000" android:endColor="#FFFFFF"
android:angle="270"/>
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
And here's the layout from the activity doing the blurring on top.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sheetbdetails"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" >
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="vertical"
android:shrinkColumns="0"
android:id="@+id/sheetbdetailstable" >
<TableRow>
<TextView
android:padding="3dip" />
<TextView
android:text="You"
android:padding="3dip" />
<TextView
android:text="@string/otherparent"
android:padding="3dip" />
<TextView
android:text="Combined"
android:padding="3dip" />
</TableRow>
</TableLayout>
</ScrollView>
The transparent windows are themed from styles.xml in the apidemos using @style/Theme.Transparent.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为当你想使用多个标志时
addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND) 而不是 setFlags()...
这对我有用...
I think when you want to give more than one flags use
addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND) instead of setFlags()....
that works for me...