具有透明背景的活动界面

7

我正在创建一个可重复使用的加载屏幕,用于在活动之间切换。在LoadingActivity中,我添加了一个半透明的背景资源,但是我无法看到旧的活动。

public class LoadingActivity extends Activity {
    public static int REQUEST_LOADING_SCREEN = 40;

    @Override
    protected void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);

        FrameLayout mainLayout = new FrameLayout(this);

        mainLayout.setBackgroundResource(R.drawable.background_translucent);

        LinearLayout layout = new LinearLayout(this);
        layout.setGravity(Gravity.CENTER);

        LayoutParams params = LayoutParamsFactory.newMatchFrameLP();
        params.gravity = Gravity.CENTER;
        mainLayout.addView(layout, params);

        ProgressBar bar = new ProgressBar(this);
        bar.setIndeterminate(true);
        layout.addView(bar, LayoutParamsFactory.newWrapLinearLP());

        TextView text = new TextView(this);
        text.setText("Loading...");
        layout.addView(text, LayoutParamsFactory.newWrapLinearLP());

        setContentView(mainLayout);
    }

    public static void openFor(Activity activity) {
        Intent intent = new Intent(activity, LoadingActivity.class);
        activity.startActivityForResult(intent, REQUEST_LOADING_SCREEN);
    }

    public static void closeFrom(Activity activity) {
        activity.finishActivity(REQUEST_LOADING_SCREEN);
    }
}

编辑:

即使有以下情况:

mainLayout.setBackgroundColor(Color.TRANSPARENT);
layout.setBackgroundColor(Color.TRANSPARENT);

背景仍然是黑色的。

请发布一些 XML 或代码,展示您正在处理的内容。 - coder_For_Life22
代码已添加,background_translucent 是一个半透明的 .9.png。 - Marcos Vasconcelos
你的LinearLayout似乎不是视图的一部分。 - coder_For_Life22
我尝试将mainLayout和layout的BackgroundColor都设置为TRANSPARENT,但仍然是黑色。 - Marcos Vasconcelos
1个回答

19

你尝试过通过清单文件在活动中设置主题吗?

<activity android:name=".LoadingActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

我曾经使用@android:style/Theme.NoTitleBar.Fullscreen,现在它按预期工作了,谢谢。 - Marcos Vasconcelos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接