it-swarm.com.de

Wie erstelle ich eine transparente Aktivität für Android?

Ich möchte eine transparente Aktivität zusätzlich zu einer anderen Aktivität erstellen.

Wie kann ich das erreichen?

826
UMAR

Fügen Sie der res/values/styles.xml-Datei den folgenden Stil hinzu (wenn Sie noch keinen haben, erstellen Sie ihn.) Hier ist eine vollständige Datei:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="Android:Theme">
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:backgroundDimEnabled">false</item>
  </style>
</resources>

(Der Wert @color/transparent ist der Farbwert #00000000, den ich in der res/values/color.xml-Datei abgelegt habe. In späteren Android-Versionen können Sie auch @Android:color/transparent verwenden.)

Wenden Sie dann den Stil auf Ihre Aktivität an, zum Beispiel:

<activity Android:name=".SampleActivity" Android:theme="@style/Theme.Transparent">
...
</activity>
1277
gnobal

Es geht so:

<activity Android:name=".usual.activity.Declaration" Android:theme="@Android:style/Theme.Translucent.NoTitleBar" />
184
yanchenko

Mit der "AppCompat" -Bibliothek oder der "Android Design Support Library" ist es etwas anders:

In der styles.xml:

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
    <item name="Android:background">#33000000</item> <!-- Or any transparency or color you need -->
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:colorBackgroundCacheHint">@null</item>
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation</item>
</style>

In der AndroidManifest.xml:

<activity
    Android:name=".WhateverNameOfTheActivityIs"
    Android:theme="@style/Theme.AppCompat.Translucent">
    ...
</activity>
99
Andrey

Deklarieren Sie Ihre Aktivität im Manifest wie folgt:

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

Fügen Sie Ihrem Layout einen transparenten Hintergrund hinzu.

35
Deepak Swami

Weisen Sie das durchscheinende Design der Aktivität zu, die Sie in der Android-Manifestdatei Ihres Projekts transparent machen möchten:

<activity
    Android:name="YOUR COMPLETE ACTIVITY NAME WITH PACKAGE"
    Android:theme="@Android:style/Theme.Translucent.NoTitleBar" />
27
Jigar Pandya

Ich wollte etwas hinzufügen, da ich auch ein neuer Android-Entwickler bin. Die akzeptierte Antwort ist großartig, aber ich habe Probleme bekommen. Ich war mir nicht sicher, wie ich die colors.xml-Datei in der Farbe hinzufügen sollte. So soll es gemacht werden:

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <color name="class_zero_background">#7f040000</color>
     <color name="transparent">#00000000</color>
</resources>

In meiner ursprünglichen colors.xml-Datei hatte ich den Tag "drawable":

<drawable name="class_zero_background">#7f040000</drawable>

Also tat ich das auch für die Farbe, aber ich verstand nicht, dass die "@ color /" - Referenz die Suche nach dem Tag "color" im XML bedeutete. Ich dachte, ich sollte das auch erwähnen, um anderen zu helfen.

15

Ich habe es am 2.3.3 erreicht, indem ich Android:theme="@Android:style/Theme.Translucent" im Activity-Tag im Manifest hinzugefügt habe.

Ich weiß nicht über niedrigere Versionen ...

14
androabhay

In meinem Fall muss ich das Design unter bestimmten Bedingungen in Java zur Laufzeit einstellen. Also habe ich ein Thema im Stil erstellt (ähnlich anderen Antworten):

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="Android:Theme">
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:backgroundDimEnabled">false</item>
  </style>
</resources>

Dann habe ich es in Java auf meine Aktivität angewendet:

@Override
    protected void onCreate(Bundle savedInstanceState) {

        String email = getIntent().getStringExtra(AppConstants.REGISTER_EMAIL_INTENT_KEY);
        if (email != null && !email.isEmpty())
        {
            // We have the valid email ID, no need to take it from user, prepare transparent activity just to perform bg tasks required for login
            setTheme(R.style.Theme_Transparent);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);

        }
        else
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_dummy);


    }

Denken Sie an einen wichtigen Punkt hier: Sie müssen die Funktion setTheme() vor super.onCreate(savedInstanceState); aufrufen. Ich habe diesen Punkt verpasst und blieb 2 Stunden lang stehen und dachte darüber nach, warum mein Thema nicht zur Laufzeit reflektiert wird.

10
Gem

Fügen Sie in der onCreate - Funktion unterhalb der setContentView diese Zeile hinzu:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
7
Leebeedev

Lassen Sie das Aktivitätshintergrundbild transparent sein. Oder fügen Sie das Design in die XML-Datei ein:

<activity Android:name=".usual.activity.Declaration" Android:theme="@Android:style/Theme.Translucent.NoTitleBar" />
7
jian

Die einfachste Möglichkeit, die ich gefunden habe, besteht darin, das Thema der Aktivität im AndroidManifest auf Android:theme="@Android:style/Theme.Holo.Dialog" zu setzen. 

Rufen Sie dann in der onCreate-Methode der Aktivität getWindow().setBackgroundDrawable(new ColorDrawable(0)); auf.

6
Drew Leonce

Für Dialogaktivitäten verwende ich Folgendes:

getWindow().getDecorView().setBackgroundResource(Android.R.color.transparent);

Sie müssen aber auch Ihre Hauptansicht in der Aktivität auf unsichtbar setzen. Andernfalls ist der Hintergrund unsichtbar, während alle Ansichten darin sichtbar sind.

4
Pavel Kataykin

Ich habe nur zwei Dinge getan, und dadurch wurde meine Aktivität transparent. Sie sind unten.

  1. In der Manifestdatei habe ich gerade den untenstehenden Code in das activity -Tag eingefügt.

    Android:theme="@Android:style/Theme.Translucent.NoTitleBar.Fullscreen"
    
  2. Und ich habe nur den Hintergrund des Hauptlayouts für diese Aktivität als " # 80000000 " festgelegt. Mögen

    Android:background="#80000000"
    

Es funktioniert perfekt für mich.

3
Md Sufi Khan

Weisen Sie ihm das transluzente Design zu

Android:theme="@Android:style/Theme.Translucent.NoTitleBar"
2
saurabh

Es gibt zwei Möglichkeiten:

  1. Theme.NoDisplay verwenden
  2. Theme.Translucent.NoTitleBar verwenden

Die Verwendung von Theme.NoDisplay funktioniert weiterhin… aber nur auf älteren Android-Geräten. Wenn Sie in Android 6.0 oder höher Theme.NoDisplay verwenden, ohne finish() in onCreate() (or, technically, before onResume()) aufzurufen, wird crash Ihre App. Aus diesem Grund verwendet die EmpfehlungTheme.Translucent.NoTitleBar, die nicht unter dieser Einschränkung leidet. "

2
Shubham Soni

zusätzlich zu den obigen Antworten:

um Android Oreo-Absturz bei Aktivität zu vermeiden

<style name="AppTheme.Transparent" parent="@style/Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
    <item name="Android:windowCloseOnTouchOutside">false</item>
</style>

<activity
     Android:name="xActivity"
     Android:theme="@style/AppTheme.Transparent" />
2
Zafer Celaloglu

Hinweis 1: Erstellen Sie im Drawable-Ordner test.xml und kopieren Sie den folgenden Code

   <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle" >

    <stroke Android:width="2dp" />

    <gradient
        Android:angle="90"
        Android:endColor="#29000000"
        Android:startColor="#29000000" />

    <corners
        Android:bottomLeftRadius="7dp"
        Android:bottomRightRadius="7dp"
        Android:topLeftRadius="7dp"
        Android:topRightRadius="7dp" />

</shape>

// Hinweis: Ecken und Formen entsprechen Ihren Anforderungen.

// Hinweis 2: XML erstellen:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@drawable/test"
        Android:orientation="vertical" >

        <LinearLayout
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:layout_weight="1.09"
            Android:gravity="center"
         Android:background="@drawable/transperent_shape"
            Android:orientation="vertical" >
     </LinearLayout>
    </LinearLayout>
1
ManiTeja

All diese Antworten können verwirrend sein, es gibt einen Unterschied zwischen transparenter Aktivität und keiner Benutzeroberflächenaktivität.

Mit diesem:

Android:theme="@Android:style/Theme.Translucent.NoTitleBar"

Macht die Aktivität transparent, blockiert aber die Benutzeroberfläche.

Wenn Sie eine UI-Aktivität "Keine" möchten, verwenden Sie Folgendes:

Android:theme="@Android:style/Theme.NoDisplay"

0
Kashkashio

Fügen Sie dem Activity-Tag in Ihrer Manifestdatei die folgende Zeile hinzu, die transparent aussehen muss.

Android:theme="@Android:style/Theme.Translucent"
0
Kanagalingam

Wenn Sie AppCompatActivity verwenden, fügen Sie dies in styles.xml hinzu.

<style name="TransparentCompat" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
    <item name="Android:colorBackgroundCacheHint">@null</item>
    <item name="Android:windowIsTranslucent">true</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation</item>
</style>

In manifest-Datei können Sie dieses Thema so zu einem Aktivitäts-Tag hinzufügen

Android:theme="@style/TransparentCompat"

für mehr Details lesen Sie diese Artikel

0
Zohab Ali