在另一个活动上叠加活动或在另一个活动上叠加视图

时间:2011-10-24 15:43:37

标签: android view android-activity overlay

我有2个类,FirstActivity和SecondActivity。

第一项活动

Intent intent=new Intent(getApplicationContext(),SecondActivity.class);
startActivity(intent);

SecondActivity是否可以覆盖FirstActivity?即。 FirstActivity变暗,SecondActivity显示在FirstActivity之上。

如果不能进行2项不同的活动,是否可以在同一活动中对2个视图进行叠加?我希望使用对话框不是唯一的选择。

4 个答案:

答案 0 :(得分:24)

我建议您将第二个活动设置为对话框 - 这将使背景变暗。这是一个可能有用的教程:

http://developer.android.com/guide/topics/ui/dialogs.html

http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application

或者您可以将清单中的主题设置为SecondActivity的对话框。

答案 1 :(得分:21)

如果您不想进行对话,可以使用相对布局覆盖视图。

<?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" >

    <LinearLayout android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="some content"
            android:textSize="70dp"/>
    </LinearLayout>

    <LinearLayout android:id="@+id/overlay"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#99000000"
            android:clickable="true"
        android:visibility="gone">
        <EditText android:id="@+id/edittext"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_margin="50dp" />
    </LinearLayout>

</RelativeLayout>

第一个LinearLayout(内容/内容)是您的常规内容所在的基本布局。

第二个LinearLayout(id / overlay)是您希望在基本布局顶部显示的叠加布局。背景颜色将为您提供淡出的背景,您可以添加任何您想要的布局来制作叠加层。要显示叠加层,只需将其可见性从gone更改为visible

答案 2 :(得分:5)

在清单文件中声明第二个活动活动。 android:theme =“@ android:style / Theme.Dialog”。然后只需从代码中调用firstactivity的第二个活动。

 <activity
                android:name=".FirstActivity"
                android:label="@string/title_activity_first" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".SecondActivity"
                android:label="@string/title_activity_second" 
                android:theme="@android:style/Theme.Dialog"
                >
                <intent-filter>
                    <action android:name="transparent.text.SECONDACTIVITY"/>

                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

第二个活动xml文件。你可以设计你的愿望,但作为参考我发布了这个。关键概念是在manifestfile(即)如何在清单中定义你的第二个活动

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="192dp"
            android:background="#aabbcc"
            android:text="Sybrant has provided Takoma with a great team which helped us from the beginning to the final stage of our product, to our fullest satisfaction. We have been able to deliver a high quality of eLearning products to our corporate customers like Nissan with Sybrant’s support”"
            tools:context=".FirstActivity" />

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/textView1"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="43dp"
            android:layout_marginLeft="80dp"
            android:text="Button" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignRight="@+id/button1"
            android:layout_below="@+id/textView1"
            android:layout_marginRight="42dp"
            android:layout_marginTop="80dp"
            android:text="TextView" />

    </RelativeLayout>

答案 3 :(得分:-13)

1 - 截取第一个活动的屏幕截图。

2-(可选)使屏幕截图变暗,着色或模糊。

3 - 然后调用第二个活动并使用第一个活动屏幕截图作为第二个活动的背景。