Chcę utworzyć przezroczyste działanie na podstawie innego działania.
Jak mogę to osiągnąć?
Chcę utworzyć przezroczyste działanie na podstawie innego działania.
Jak mogę to osiągnąć?
Dodaj następujący styl do swojego res/values/styles.xml
pliku (jeśli go nie masz, utwórz go). Oto kompletny plik:
<?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>
(Wartością @color/transparent
jest wartość koloru, #00000000
którą umieściłem w res/values/color.xml
pliku. Możesz także użyć @android:color/transparent
w późniejszych wersjach Androida).
Następnie zastosuj styl do swojej aktywności, na przykład:
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
<item name="android:windowBackground">@android:color/transparent</item>
android:windowIsFloating
ustawienia na true. Usuń tę właściwość, aby zachowywać się jak normalna aktywność (w tym przypadku będzie pasowaćandroid:style/Theme.Translucent.NoTitleBar
)AppCompatActivity
. Tak samoparent="android:Theme"
awaria mojej aplikacji. Właśnie go usunąłem i działało to jak urok. Dzięki!Wygląda to tak:
źródło
50% black should be #7f000000
. Każdy składnik (A, R, G, B) może przyjmować wartości0-255
.50% of 255 = 127. 127 in Hex = 7F
To, jak obliczyć przezroczystość (nieprzezroczystość)W pliku styles.xml:
W AndroidManifest.xml:
źródło
Theme.Appcompat.Light.NoActionBar
zamiast tego odziedziczyć motyw .background
i umieścić preferowany kolor półprzezroczysty wwindowBackground
Zadeklaruj swoją aktywność w manifeście w ten sposób:
I dodaj przezroczyste tło do swojego układu.
źródło
Przypisz półprzezroczysty motyw do działania, które chcesz uczynić przezroczystym w pliku manifestu Androida swojego projektu:
źródło
Chciałem to trochę dodać, ponieważ jestem również nowym programistą Androida. Przyjęta odpowiedź jest świetna, ale miałem problemy. Nie byłem pewien, jak dodać kolor do pliku colors.xml. Oto, jak należy to zrobić:
colors.xml
W moim oryginalnym pliku colors.xml miałem tag „drawable”:
Zrobiłem to również dla koloru, ale nie rozumiałem, że odwołanie „@ color /” oznacza poszukiwanie znacznika „color” w pliku XML. Pomyślałem, że powinienem również o tym wspomnieć, aby pomóc wszystkim innym.
źródło
Osiągnąłem to w 2.3.3, po prostu dodając
android:theme="@android:style/Theme.Translucent"
znacznik aktywności w manifeście.Nie wiem o niższych wersjach ...
źródło
AppCompatActivity
jeśli używasz tego.W moim przypadku muszę ustawić motyw w środowisku wykonawczym w Javie na podstawie niektórych warunków. Więc stworzyłem jeden motyw w stylu (podobny do innych odpowiedzi):
Następnie w Javie zastosowałem to do mojej działalności:
Zapamiętaj jeden Ważny punkt tutaj: musisz wywołać tę
setTheme()
funkcję wcześniejsuper.onCreate(savedInstanceState);
. Brakowało mi tego punktu i utknąłem na 2 godziny, zastanawiając się, dlaczego mój motyw nie jest odzwierciedlany w czasie wykonywania.źródło
W funkcji onCreate , poniżej setContentView , dodaj ten wiersz:
źródło
Niech obraz tła aktywności będzie przezroczysty. Lub dodaj motyw w pliku XML:
źródło
Najłatwiejszym sposobem, jaki znalazłem, jest ustawienie motywu działania w AndroidManifest na
android:theme="@android:style/Theme.Holo.Dialog"
.Następnie w metodzie onCreate działania wywołanie
getWindow().setBackgroundDrawable(new ColorDrawable(0));
.źródło
Do aktywności w dialogu używam tego:
Ale musisz także ustawić swój główny widok w aktywności na niewidoczny. W przeciwnym razie tło będzie niewidoczne, a wszystkie widoki w nim będą widoczne.
źródło
oprócz powyższych odpowiedzi:
aby uniknąć awarii Androida związanej z Oreo
źródło
Zrobiłem tylko dwie rzeczy, dzięki czemu moja działalność była przejrzysta. Są poniżej.
W pliku manifestu właśnie dodałem poniższy kod w tagu aktywności .
I właśnie ustawiłem tło głównego układu dla tego działania jako „ # 80000000 ”. Lubić
To doskonale dla mnie działa.
źródło
Jeśli używasz,
AppCompatActivity
dodaj tostyles.xml
W
manifest
pliku możesz dodać ten motyw do tagu aktywności takiego jak tenAby uzyskać więcej informacji, przeczytaj ten artykuł
źródło
Przypisz do niego motyw Przezroczysty
źródło
Istnieją dwa sposoby:
Korzystanie
Theme.NoDisplay
będzie nadal działać… ale tylko na starszych urządzeniach z Androidem. W Androidzie 6.0 i wyższe, wykorzystując Theme.NoDisplay bez zawijaniafinish()
wonCreate() (or, technically, before onResume())
będą upaść swoją aplikację. Dlatego zaleca się stosowanieTheme.Translucent.NoTitleBar
, które nie podlega tym ograniczeniom . ”źródło
Uwaga 1: W folderze Drawable utwórz plik test.xml i skopiuj następujący kod
// Uwaga: Narożniki i kształt są zgodne z wymaganiami.
// Uwaga 2: Utwórz xml:
źródło
Wystarczy dodać następujący wiersz do tagu aktywności w pliku manifestu, który musi wyglądać przezroczysto.
źródło
Wszystkie te odpowiedzi mogą być mylące, istnieje różnica między aktywnością Transparent a aktywnością None UI.
Za pomocą tego:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Sprawi, że działanie będzie przezroczyste, ale zablokuje interfejs użytkownika.
Jeśli chcesz mieć działanie interfejsu użytkownika Brak, użyj tego:
android:theme="@android:style/Theme.NoDisplay"
źródło
Możesz usunąć
setContentView(R.layout.mLayout)
z aktywności i ustawić motyw jakoandroid:theme="@style/AppTheme.Transparent"
. Sprawdź ten link, aby uzyskać więcej informacji.źródło