Ich möchte eine transparente Aktivität zusätzlich zu einer anderen Aktivität erstellen.
Wie kann ich das erreichen?
Ich möchte eine transparente Aktivität zusätzlich zu einer anderen Aktivität erstellen.
Wie kann ich das erreichen?
Fügen res/values/styles.xml
Sie Ihrer Datei den folgenden Stil hinzu (falls Sie 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 die res/values/color.xml
Datei eingefügt habe. Sie können ihn auch @android:color/transparent
in späteren Android-Versionen verwenden.)
Wenden Sie dann den Stil auf Ihre Aktivität an, zum Beispiel:
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
<item name="android:windowBackground">@android:color/transparent</item>
android:windowIsFloating
es auf true gesetzt ist. Entfernen Sie diese Eigenschaft, um sich wie eine normale Aktivität zu verhalten (in diesem Fall wird sie übereinstimmenandroid:style/Theme.Translucent.NoTitleBar
)AppCompatActivity
. Alsoparent="android:Theme"
stürzte meine App ab. Ich habe es gerade entfernt und es hat wie ein Zauber funktioniert. Vielen Dank!Es geht so:
quelle
50% black should be #7f000000
. Jede Komponente (A, R, G, B) kann Werte annehmen0-255
.50% of 255 = 127. 127 in Hex = 7F
So berechnen Sie Transparenz (Deckkraft)In der styles.xml:
In der AndroidManifest.xml:
quelle
Theme.Appcompat.Light.NoActionBar
stattdessen, dass Ihr Thema von erbt .background
und Ihre bevorzugte halbtransparente Farbe inwindowBackground
Erklären Sie Ihre Aktivität im Manifest folgendermaßen:
Fügen Sie Ihrem Layout einen transparenten Hintergrund hinzu.
quelle
Weisen Sie das durchscheinende Thema der Aktivität zu, die Sie in der Android-Manifestdatei Ihres Projekts transparent machen möchten:
quelle
Ich wollte noch etwas hinzufügen, da ich auch ein neuer Android-Entwickler bin. Die akzeptierte Antwort ist großartig, aber ich hatte einige Probleme. Ich war mir nicht sicher, wie ich die Farbe zur Datei colours.xml hinzufügen sollte. So sollte es gemacht werden:
Farben.xml
In meiner ursprünglichen Datei colours.xml hatte ich das Tag "drawable":
Und so habe ich das auch für die Farbe gemacht, aber ich habe nicht verstanden, dass die Referenz "@ color /" bedeutet, dass im XML nach dem Tag "color" gesucht wird. Ich dachte, ich sollte das auch erwähnen, um anderen zu helfen.
quelle
Ich habe es in 2.3.3 erreicht, indem ich einfach
android:theme="@android:style/Theme.Translucent"
das Aktivitäts-Tag im Manifest hinzugefügt habe .Ich weiß nicht über niedrigere Versionen ...
quelle
AppCompatActivity
wenn Sie dies verwenden.In meinem Fall muss ich das Thema auf der Laufzeit in Java basierend auf einigen Bedingungen festlegen. Also habe ich ein Thema mit Stil erstellt (ähnlich wie bei anderen Antworten):
Dann habe ich es in Java auf meine Aktivität angewendet:
Beachten Sie hier einen wichtigen Punkt : Sie müssen die
setTheme()
Funktion vorher aufrufensuper.onCreate(savedInstanceState);
. Ich habe diesen Punkt verpasst und bin 2 Stunden geblieben, weil ich mir überlegt habe, warum mein Thema zur Laufzeit nicht wiedergegeben wird.quelle
In der onCreate Funktion unter dem setContentView , fügen Sie diese Zeile:
quelle
Lassen Sie einfach das Aktivitätshintergrundbild transparent sein. Oder fügen Sie das Thema in die XML-Datei ein:
quelle
Der einfachste Weg, den ich gefunden habe, besteht darin, das Thema der Aktivität im AndroidManifest auf zu setzen
android:theme="@android:style/Theme.Holo.Dialog"
.Rufen Sie dann in der onCreate-Methode der Aktivität auf
getWindow().setBackgroundDrawable(new ColorDrawable(0));
.quelle
Für Dialogaktivitäten verwende ich Folgendes:
Sie müssen jedoch auch Ihre Hauptansicht in der Aktivität auf unsichtbar setzen. Andernfalls ist der Hintergrund unsichtbar, während alle darin enthaltenen Ansichten sichtbar sind.
quelle
zusätzlich zu den obigen Antworten:
um Android Oreo im Zusammenhang mit Absturz bei Aktivität zu vermeiden
quelle
Ich habe nur zwei Dinge getan, und das hat meine Aktivitäten transparent gemacht. Sie sind unten.
In der Manifestdatei habe ich gerade den folgenden Code in das Aktivitäts- Tag eingefügt .
Und ich habe gerade den Hintergrund des Hauptlayouts für diese Aktivität als " # 80000000 " festgelegt. Mögen
Es funktioniert perfekt für mich.
quelle
Wenn Sie verwenden,
AppCompatActivity
fügen Sie dies hinzustyles.xml
In der
manifest
Datei können Sie dieses Thema zu einem Aktivitäts-Tag wie diesem hinzufügenWeitere Informationen finden Sie in diesem Artikel
quelle
Weisen Sie ihm das durchscheinende Thema zu
quelle
Es gibt zwei Möglichkeiten:
Die Verwendung
Theme.NoDisplay
funktioniert weiterhin… aber nur auf älteren Android-Geräten. Auf Android 6.0 und höher, mit Theme.NoDisplay ohne Aufruffinish()
inonCreate() (or, technically, before onResume())
wird zum Absturz der App. Aus diesem Grund wird die Verwendung empfohlenTheme.Translucent.NoTitleBar
, die nicht unter dieser Einschränkung leidet . “quelle
Hinweis 1: Erstellen Sie im Ordner Drawable die Datei test.xml und kopieren Sie den folgenden Code
// Hinweis: Ecken und Form entsprechen Ihren Anforderungen.
// Hinweis 2: XML erstellen:
quelle
Fügen Sie einfach die folgende Zeile zum Aktivitäts-Tag in Ihrer Manifest-Datei hinzu, die transparent aussehen muss.
quelle
Alle diese Antworten können verwirrend sein. Es gibt einen Unterschied zwischen der Aktivität "Transparent" und der Aktivität "Keine Benutzeroberfläche".
Verwenden Sie diese:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Macht die Aktivität transparent, blockiert aber die Benutzeroberfläche.
Wenn Sie eine Aktivität "Keine Benutzeroberfläche" möchten, verwenden Sie diese:
android:theme="@android:style/Theme.NoDisplay"
quelle
Sie können
setContentView(R.layout.mLayout)
aus Ihrer Aktivität entfernen und das Thema als festlegenandroid:theme="@style/AppTheme.Transparent"
. Überprüfen Sie diesen Link für weitere Details.quelle