Antworten:
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>
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 übereinstimmen android:style/Theme.Translucent.NoTitleBar
)
AppCompatActivity
. Also parent="android:Theme"
stürzte meine App ab. Ich habe es gerade entfernt und es hat wie ein Zauber funktioniert. Vielen Dank!
Es geht so:
<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
50% black should be #7f000000
. Jede Komponente (A, R, G, B) kann Werte annehmen 0-255
. 50% of 255 = 127. 127 in Hex = 7F
So berechnen Sie Transparenz (Deckkraft)
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>
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:
<activity
android:name=".yourActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
Fügen Sie Ihrem Layout einen transparenten Hintergrund hinzu.
Weisen Sie das durchscheinende Thema 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" />
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:
<?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 Datei colours.xml hatte ich das Tag "drawable":
<drawable name="class_zero_background">#7f040000</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.
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 ...
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):
<?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);
}
Beachten Sie hier einen wichtigen Punkt : Sie müssen die setTheme()
Funktion vorher aufrufen super.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.
In der onCreate Funktion unter dem setContentView , fügen Sie diese Zeile:
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
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));
.
Für Dialogaktivitäten verwende ich Folgendes:
getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
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.
zusätzlich zu den obigen Antworten:
um Android Oreo im Zusammenhang mit 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" />
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 .
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
Und ich habe gerade den Hintergrund des Hauptlayouts für diese Aktivität als " # 80000000 " festgelegt. Mögen
android:background="#80000000"
Es funktioniert perfekt für mich.
Wenn Sie verwenden, AppCompatActivity
fügen Sie dies hinzustyles.xml
<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 der manifest
Datei können Sie dieses Thema zu einem Aktivitäts-Tag wie diesem hinzufügen
android:theme="@style/TransparentCompat"
Weitere Informationen finden Sie in diesem Artikel
Die Verwendung Theme.NoDisplay
funktioniert weiterhin… aber nur auf älteren Android-Geräten. Auf Android 6.0 und höher, mit Theme.NoDisplay ohne Aufruf finish()
in onCreate() (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 . “
Hinweis 1: Erstellen Sie im Ordner Drawable die Datei 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 Form 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>
Fügen Sie einfach die folgende Zeile zum Aktivitäts-Tag in Ihrer Manifest-Datei hinzu, die transparent aussehen muss.
android:theme="@android:style/Theme.Translucent"
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"
<item name="android:windowBackground">@android:color/transparent</item>