Наложение действия на другое действие ИЛИ наложение просмотра на другое - PullRequest
25 голосов
/ 24 октября 2011

У меня есть 2 класса, FirstActivity и SecondActivity.

Первое занятие

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

Возможно ли SecondActivity накладывать на FirstActivity? то есть. FirstActivity затемняется, SecondActivity отображается поверх FirstActivity.

Если это невозможно для двух разных действий, возможно ли сделать наложение для двух представлений в одном и том же занятии? Я надеюсь, что использование диалога - не единственный вариант.

Ответы [ 4 ]

24 голосов
/ 24 октября 2011

Я предлагаю вам установить вторую активность в виде диалога, который затемнит фон. Вот учебник, который может быть полезен:

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

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

Или вы можете просто установить тему в манифесте в качестве диалога для вашей SecondActivity.

21 голосов
/ 24 октября 2011

Если вы не хотите создавать диалог, вы можете наложить представления, используя относительную компоновку.

<?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 (id / content) - это ваша базовая компоновка, куда будет идти ваш обычный контент.

Второй LinearLayout (id / overlay) - это ваш оверлейный макет, который вы хотите показать поверх базового макета.Цвет фона даст вам затемненный фон, и вы можете добавить все, что вы хотите, к этому макету, чтобы сделать наложение.Чтобы показать наложение, просто измените его видимость с gone на visible.

5 голосов
/ 06 февраля 2013

В файле манифеста объявите вторую активность таким образом. android: theme = "@ android: style / Theme.Dialog". затем просто вызовите вторую активность из устойчивости вашего кода.

 <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-файла. Вы можете создать его по своему желанию, но для справки я опубликовал это. Ключевая концепция в манифест-файле (т. Е.) Как определить вторую активность в манифесте

    <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>
0 голосов
/ 30 июля 2015

1-Сделайте скриншот первого действия.

2- (Необязательно) Затемнение, затемнение или размытие снимка экрана.

3-Затем вызовите второе действие и используйте скриншот первого действия в качестве фона для второго действия.

...