Показать новую активность поверх предыдущей активности - PullRequest
2 голосов
/ 14 декабря 2011

enter image description here

У меня есть активность А, в которой есть кнопка «вниз» (см. Изображение выше). Когда я нажимаю эту кнопку, я хочу запустить действие B поверх действия A, поэтому часть действия A внизу все еще видна. Занятие B, в свою очередь, может запустить ряд других видов деятельности (C, D и т. Д.), Но они отображаются только в той же области экрана, что и B. Кто-нибудь знает, возможно ли это и как я могу это сделать?

Редактировать : я знаю, что могу добавить android:theme="@android:style/Theme.Dialog" к своему манифесту "Активность", но насколько я знаю, это отображается в центре экрана, а не так, что я могу изменить его размер, лайк. Поправь меня, если я ошибаюсь ...

Ответы [ 2 ]

5 голосов
/ 14 декабря 2011

Это xml для действий, которые должны быть поверх активности a

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00000000" >
     <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0"
        android:layout_weight="0.6"
        android:background="#000000" >
     //use this for your new activity contents
     </LinearLayout>
     <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0"
        android:layout_weight="0.4"
        android:background="#00000000" >
     //this is empty
     </LinearLayout>
</LinearLayout>

Теперь в вашем манифесте для действия B, C, ... и т. Д .:

    <activity
        android:label="@string/app_name"
        android:name=".ActivityB"
        android:theme="@style/Theme.Transparent"
        android:screenOrientation="portrait" >

in values ​​/ styles.xml :

<?xml version="1.0" encoding="utf-8"?>  
<resources>
    <style name="Theme.Transparent" parent="android:Theme.NoTitleBar">  
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@drawable/theme_transparent</item>
    </style>
</resources>  

Наконец, в drawable / theme_transparent.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#00000000" ></solid>
</shape>
3 голосов
/ 14 декабря 2011

То, что вам нужно использовать, это Фрагменты.

Фрагменты можно использовать для заполнения части экрана, в то же время делая что-то другое полностью в другой.В вашем примере вы можете создать основное действие, которое содержит два Fragments.Один Fragment контролирует «активность A», другой - «активность B», а другие - заменяя текущий Fragment в области «B активность» другим нажатием кнопки., вы можете достичь поведения, которое вы ищете.По крайней мере, так я это сделал в своем приложении, содержащем область основного контента и музыкальный проигрыватель.Музыкальный проигрыватель остается на месте, пока меняется основной контент.

К сожалению, сейчас я не могу предоставить пример кода, но вот учебник, который должен помочь вам начать:

Если вы работаете с версией Android ниже 3.0, вы можете использовать пакет совместимости.

http://developer.android.com/sdk/compatibility-library.html

http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/

...