为什么 android:FLAG_BLUR_BEHIND 在我的新活动中创建渐变背景而不是模糊窗口?

发布于 2024-09-05 16:21:02 字数 8435 浏览 5 评论 0原文

我有两项活动。一个应该在另一个面前变得模糊。

背景活动有几个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疾风者 2024-09-12 16:21:02

我认为当你想使用多个标志时
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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文