ඇන්ඩ්‍රොයිඩ් හි විනිවිද පෙනෙන ක්‍රියාකාරකමක් මා නිර්මාණය කරන්නේ කෙසේද?


927

වෙනත් ක්‍රියාකාරකමක් මත විනිවිද පෙනෙන ක්‍රියාකාරකමක් නිර්මාණය කිරීමට මට අවශ්‍යය.

මට මෙය සාක්ෂාත් කරගත හැක්කේ කෙසේද?


විනිවිද පෙනෙන ක්‍රියාකාරිත්වයේ ප්‍රයෝජනය කුමක්දැයි ඔබට අපට පැවසිය හැකිද
මොහොමඩ් බෙන් රොම්ඩේන්

Answers:


1406

ඔබගේ res/values/styles.xmlගොනුවේ පහත ශෛලිය එක් කරන්න (ඔබට එකක් නොමැති නම් එය සාදන්න.) මෙන්න සම්පූර්ණ ගොනුවක්:

<?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>

(වටිනාකම @color/transparentයනු #00000000මා res/values/color.xmlගොනුවේ දැමූ වර්ණ අගයයි . ඔබට @android:color/transparentපසුව ඇන්ඩ්‍රොයිඩ් අනුවාදවලද භාවිතා කළ හැකිය .)

ඉන්පසු ඔබේ ක්‍රියාකාරකමට ශෛලිය යොදන්න, උදාහරණයක් ලෙස:

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>

13
මම පාවිච්චි කළා<item name="android:windowBackground">@android:color/transparent</item>
කවුරුහරි කොහේ හරි

33
මහා! එක් වැඩිදියුණු කිරීමක් පමණි: ඔබ දෙමාපිය = "@ android: style / Theme.Dialog" භාවිතා කරන්නේ නම් ඔබට සංවාදයක හැසිරීම හරියටම ලැබෙනු ඇත. එයින් අදහස් වන්නේ ඇතුළට / පිටතට ලිස්සා යාම වෙනුවට / ක්‍රියාකාරීව
වැටීම

74
@ එමිලියෝ සඳහන් කළ පරිදි මෙය සංවාදයක් ලෙස හැසිරෙනු ඇත android:windowIsFloating. සාමාන්‍ය ක්‍රියාකාරකමක් ලෙස හැසිරීමට මෙම දේපල ඉවත් කරන්න (මේ අවස්ථාවේ දී එය android:style/Theme.Translucent.NoTitleBar
ගැලපෙනු

39
පූර්ණ තිර සහ විනිවිද පෙනෙන ක්‍රියාකාරකමක් ඇති කිරීම සඳහා මම <item name = "android: windowIsFloating"> true </item> ඉවත් කළෙමි
Kiem Duong

12
මගේ ක්‍රියාකාරකම් ව්‍යුත්පන්න විය AppCompatActivity. ඒ නිසා parent="android:Theme"මගේ යෙදුම නැවතුනේ විය. මම එය ඉවත් කළ අතර එය චාම් ලෙස ක්‍රියා කළෙමි. ස්තූතියි!
අතුල්

193

එය මෙසේ ය:

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

3
තේමාව = "@ ඇන්ඩ්රොයිඩ්:: මෙම ටිකක් ඇන්ඩ්රොයිඩ් - ඔබ යන තේමාව එකතු alex මැනිෆෙස්ටයේ ඔබගේ ක්රියාකාරකම් ප්රකාශ පල කර එක් එක් ක්රියාකාරකම සඳහා ඔබ පාරභාසක තේමාව එය ලබා දිය හැකි, ශෛලිය / Theme.Translucent.NoTitleBar
Donal Rafferty

2
50% විනිවිද පෙනෙන ක්‍රියාකාරකම් කරන්නේ කෙසේදැයි ඔබට කියන්න පුළුවන්ද? මෙය 100% ක් වන අතර මට 50% ක් අවශ්‍යයි
නිකුන්ජ් පටෙල්

16
@ user1129443: 50% black should be #7f000000. සෑම සංරචකයක්ම (A, R, G, B) සිට අගයන් ලබා ගත හැකිය 0-255. 50% of 255 = 127. 127 in Hex = 7Fවිනිවිදභාවය (පාරාන්ධතාව) ගණනය කරන්නේ කෙසේද
Trung Nguyen

4
ක්‍රියාකාරකම ක්‍රියාත්මක වන බැවින් මෙම ක්‍රමය UI අගුළු දමයි, නමුත් එය පාරභාසක ලෙස සකසා ඇති බැවින් කෙනෙකුට කිසිවක් කළ නොහැක. මෙම UI අගුලු දැමීම වළක්වා ගැනීමට ක්‍රමයක් තිබේ.
අඛිල් ලත්ත

3
අවාසනාවකට මෙය හොඳ විසඳුමක් නොවේ. අඛිල් පවසන පරිදි, එය යූඅයි අගුළු දමයි!
likejudo

133

Style.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>

AndroidManifest.xml හි:

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

1
ඔබ සැබවින්ම මෙම ක්‍රියාකාරකමෙහි යමක් ප්‍රදර්ශනය කිරීමට අදහස් කරන්නේ නම් (ඩයලොග් හෝ ඩයලොග් ෆ්‍රැග්මන්ට් එකක් කියන්න), සියල්ල අඳුරු තේමාවක් බව ඔබට පෙනෙනු ඇත. එබැවින් ඔබේ තේමාව Theme.Appcompat.Light.NoActionBarඒ වෙනුවට උරුම කර ගැනීමට ඔබට අවශ්‍ය විය හැකිය .
tir38

1
මගේ නඩුවේ එය කළු පසුබිමක් පෙන්නුම් කරයි. මා මව් තේමාව වෙනත් දෙයක් සකසා ඇත, නමුත් එක් විශේෂිත ක්‍රියාකාරකමක් මත මම සඳහන් කළ පරිදි තේමාව වෙනස් කරමි. කිසියම් උදව්වක් තිබේද?
අබ්දුල් වහීඩ්

4
මම "android: background" ඉවත් කරන විට විශිෂ්ට ලෙස ක්‍රියා කරයි
Oded Breiner

2
මම හිතන්නේ ඔබට backgroundකැමති අර්ධ පාරදෘශ්‍ය වර්ණය ඉවත් කර දැමීමට අවශ්‍යයිwindowBackground
hmac

Activity gnobal ගේ පිළිතුරට වෙනස්ව ඔබගේ ක්‍රියාකාරකම AppCompatActivity භාවිතා කරන්නේ නම් මෙය පිළිතුර විය යුතුය.
AeroEchelon

37

ඔබේ ක්‍රියාකාරකම් මේ ආකාරයෙන් මැනිෆෙස්ටයේ ප්‍රකාශ කරන්න:

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

ඔබේ පිරිසැලසුමට විනිවිද පෙනෙන පසුබිමක් එක් කරන්න.


හොඳම ක්‍රමය. ස්තූතියි
පීටර්

6
මෙම ක්‍රියාකාරකම සමඟ ඔබ තේමාවක් භාවිතා කළ යුතුය.ඇප්කොම්පට් තේමාවක් (හෝ පැවත එන්නන්).
පූනි

28

ඔබේ ව්‍යාපෘතියේ ඇන්ඩ්‍රොයිඩ් මැනිෆෙස්ට් ගොනුවේ විනිවිද පෙනෙන බවට පත් කිරීමට අවශ්‍ය ක්‍රියාකාරකම් සඳහා පාරභාසක තේමාව පවරන්න:

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

17

මගේ නඩුවේදී, සමහර කොන්දේසි මත පදනම්ව මට ජාවා හි ධාවන වේලාව තේමාව සැකසිය යුතුය. එබැවින් මම එක් තේමාවක් ශෛලියෙන් නිර්මාණය කළෙමි (වෙනත් පිළිතුරු වලට සමාන):

<?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>

ජාවාහිදී මම එය මගේ ක්‍රියාකාරකමට යොදන ලදි:

@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);
}

මෙහි එක් වැදගත් කරුණක් මතක තබා ගන්න : ඔබ setTheme()පෙර ශ්‍රිතය අමතන්න super.onCreate(savedInstanceState);. ධාවන වේලාවේදී මගේ තේමාව පිළිබිඹු නොවන්නේ මන්දැයි සිතමින් මම මෙම කරුණ මග හැරී පැය 2 ක් රැඳී සිටියෙමි.


16

මම නව ඇන්ඩ්‍රොයිඩ් සංවර්ධකයෙකු වන බැවින් මේ සඳහා ටිකක් එකතු කිරීමට මට අවශ්‍ය විය. පිළිගත් පිළිතුර විශිෂ්ටයි, නමුත් මම යම් කරදරයකට මුහුණ දුන්නා. Colors.xml ගොනුවට වර්ණය එකතු කරන්නේ කෙසේදැයි මට විශ්වාස නැත. එය කළ යුතු ආකාරය මෙන්න:

color.xml

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

මගේ මුල් color.xml ගොනුවේ මට "අදින්න" යන ටැගය තිබුණි:

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

ඒ නිසා මම වර්ණය සඳහාද එසේ කළෙමි, නමුත් "@ color /" යොමුව XML හි "වර්ණය" ටැගය සෙවීම බව මට නොතේරුණි. වෙනත් ඕනෑම කෙනෙකුට උපකාර කිරීම සඳහා මෙය සඳහන් කළ යුතු යැයි මම සිතුවෙමි.


16

android:theme="@android:style/Theme.Translucent"මැනිෆෙස්ටයේ ක්‍රියාකාරකම් ටැගය එක් කිරීමෙන් මම එය 2.3.3 දින ලබා ගත්තා .

පහළ අනුවාද ගැන මම නොදනිමි ...


මෙය 2.2 සඳහා ද හොඳින් ක්‍රියාත්මක වේ. මම දැන් ලැයිස්තු දර්ශනයක් සමඟ සරල ක්‍රියාකාරකමක් නිර්මාණය කළ අතර එය අවසාන ක්‍රියාකාරකම මත පාවෙයි.
slott

එය API 1 හි එකතු කරන ලදි, එය ගැටළුවක් නොවේ :)
xmen

7
ඔබ මෙය භාවිතා AppCompatActivityකරන්නේ නම් භාවිතා නොකරන්න .
zackygaurav

7.0 හි ද ක්‍රියා කරයි, එබැවින් එහි හොඳ ප්‍රවේශය. මම එය @android: style / Theme.Translucent.NoTitleBar.Fullscreen
-

9

තුළ onCreate කාර්යය, පහත setContentView , මෙම මාර්ගය එකතු කරන්න:

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

23
කිසියම් හේතුවක් නිසා පසුබිම සම්පූර්ණයෙන්ම කළු කිරීමට සලස්වයි.
සුබින් සෙබස්තියන්

මගේත් ub සුබින් සෙබස්තියන්, යමෙක් ඒ සඳහා විසඳුමක් සොයා ගත්තාද?
finnmglas

8

ක්‍රියාකාරකම් පසුබිම් රූපය විනිවිදභාවයෙන් යුක්ත වීමට ඉඩ දෙන්න. හෝ XML ගොනුවේ තේමාව එක් කරන්න:

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

7

මා සොයාගෙන ඇති පහසුම ක්‍රමය නම් ක්‍රියාකාරකම් තේමාව AndroidManifest හි සැකසීමයි android:theme="@android:style/Theme.Holo.Dialog".

ඉන්පසු ක්‍රියාකාරක onCreate ක්‍රමයේදී අමතන්න getWindow().setBackgroundDrawable(new ColorDrawable(0));.


6

සංවාද ක්‍රියාකාරකම් සඳහා මම මෙය භාවිතා කරමි:

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

නමුත් ක්‍රියාකාරකම තුළ ඔබගේ ප්‍රධාන දර්ශනය අදෘශ්‍යමාන ලෙස සැකසිය යුතුය. එසේ නොමැතිනම් පසුබිම අදෘශ්‍යමාන වන අතර එහි ඇති සියලුම දර්ශන දැකගත හැකිය.


2
පසුබිම මුළුමනින්ම කළු කිරීමට
සලස්වයි

5

ඉහත පිළිතුරු වලට අමතරව:

android Oreo ආශ්‍රිත ක්‍රියාකාරිත්වය බිඳ වැටීම වළක්වා ගැනීමට

<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
2018 වන විට මෙය හොඳම පිළිතුර
Geek Guy

ඒපීඅයි 28 සමඟ ඉමුලේටරය පිළිබඳ කළු පසුබිමක් මට ලබා දුන්නේය
කවුරුහරි කොහේ හරි

ඇන්ඩ්‍රොයිඩ් 8.0 හි දිශානතිය සැකසීමට අදාළ බිඳවැටීම් නිවැරදි කිරීමට මම මෙය උත්සාහ කළ නමුත් මට තවමත් නීති විරෝධී ස්ටේට් එක්සෙප්ෂන් ලැබෙමින් පවතී: පූර්ණ තිර විනිවිද පෙනෙන ක්‍රියාකාරකම් පමණක් දිශානතිය ඉල්ලා සිටී
රාහුල් සහනි

3

මම කාරණා දෙකක් කළා, එය මගේ ක්‍රියාකාරකම් විනිවිද පෙනෙන බවට පත් කළා. ඒවා පහතින්.

  1. මැනිෆෙස්ට් ගොනුවේ මම පහත දැක්වෙන කේතය ක්‍රියාකාරකම් ටැගයෙහි එක් කළෙමි .

    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
  2. මම එම ක්‍රියාකාරකම සඳහා ප්‍රධාන පිරිසැලසුමේ පසුබිම " # 80000000 " ලෙස සකසා ඇත්තෙමි . මෙන්

    android:background="#80000000"

එය මට හොඳින් වැඩ කරයි.


3

ඔබ භාවිතා කරන්නේ AppCompatActivityනම් මෙය ඇතුලත් කරන්නstyles.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>

දී manifestගොනුව ඔයාට මේ වගේ ක්රියාකාරකම් ටැගය මෙම තේමාව එකතු කල හැක

android:theme="@style/TransparentCompat"

වැඩි විස්තර සඳහා මෙම ලිපිය කියවන්න


බ්‍රෝ මම ඉහත කේතය භාවිතා කරන විට විනිවිද පෙනෙන ක්‍රියාකාරී පරිපූර්ණ නමුත් එය පෙර කලා පුවරුවේ පාරාන්ධතාවය ප්‍රදර්ශනය නොකරයි එය මගේ නිවසේ තිරයේ (බිතුපත් තිරය) පෙන්වයි [! [ i.stack.imgur.com/rQzd2.jpg] [ 1]] [1] [1]:
කාර්තික්යුවාන්


2

එය පාරභාසක තේමාව පවරන්න

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

2

ක්‍රම දෙකක් තිබේ:

  1. Theme.NoDisplay භාවිතා කිරීම
  2. Theme.Translucent.NoTitleBar භාවිතා කිරීම

භාවිතා Theme.NoDisplayතවමත් වැඩ කරනු ඇත ... නමුත් පැරණි Android උපාංග මත පමණි. ඇන්ඩ්රොයිඩ් 6.0 සහ ඉහළ මත, කැඳවීමකින් තොරව Theme.NoDisplay භාවිතා finish()දී onCreate() (or, technically, before onResume())ඇත හානිවීමට ඔබගේ යෙදුම. මෙම හේතුව වන්නේ ඒ නිර්දේශ භාවිතා කිරීමයි Theme.Translucent.NoTitleBarමෙම පෙළෙන නොවන, කිසිදු සීමා . "


1

සටහන 1: අදින්න හැකි ෆෝල්ඩරයේ test.xml නිර්මාණය කර පහත කේතය පිටපත් කරන්න

   <?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>

සටහන: කොන් සහ හැඩය ඔබේ අවශ්‍යතාවය අනුව වේ.

සටහන 2: xml සාදන්න:

    <?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>

0

විනිවිද පෙනෙන පෙනුමක් අවශ්‍ය ඔබේ මැනිෆෙස්ට් ගොනුවේ ක්‍රියාකාරකම් ටැගයට පහත පේළිය එක් කරන්න.

android:theme="@android:style/Theme.Translucent"

0

එම පිළිතුරු සියල්ලම ව්‍යාකූල විය හැකිය, විනිවිද පෙනෙන ක්‍රියාකාරකම් සහ කිසිවක් UI ක්‍රියාකාරකම් අතර වෙනසක් ඇත.

මෙය භාවිතා කිරීම:

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

ක්‍රියාකාරකම් විනිවිද පෙනෙන නමුත් UI අවහිර කරනු ඇත.

මෙය භාවිතා කරනවාට වඩා කිසිවක් UI ක්‍රියාකාරකමක් ඔබට අවශ්‍ය නම්:

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


0

ඔබට setContentView(R.layout.mLayout)ඔබගේ ක්‍රියාකාරකමෙන් ඉවත් කර තේමාව ලෙස සැකසිය හැකිය android:theme="@style/AppTheme.Transparent". වැඩි විස්තර සඳහා මෙම සබැඳිය පරීක්ෂා කරන්න .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.