जवाबों:
अपनी 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
बाद के Android संस्करणों में भी उपयोग कर सकते हैं ।)
फिर अपनी गतिविधि पर शैली लागू करें, उदाहरण के लिए:
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
android:windowIsFloating
सेट टू ट्रू के कारण। सामान्य गतिविधि की तरह व्यवहार करने के लिए इस संपत्ति को निकालें (इस मामले में यह मेल खाएगा android:style/Theme.Translucent.NoTitleBar
)
AppCompatActivity
। इसलिए parent="android:Theme"
मेरा ऐप क्रैश कर रहा था। मैंने इसे हटा दिया और यह आकर्षण की तरह काम किया। धन्यवाद!
यह इस प्रकार चलता है:
<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
50% black should be #7f000000
:। प्रत्येक घटक (ए, आर, जी, बी) से मान ले सकते हैं 0-255
। 50% of 255 = 127. 127 in Hex = 7F
पारदर्शिता (अस्पष्टता) की गणना कैसे करें
शैलियों में। 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>
Theme.Appcompat.Light.NoActionBar
इसके बजाय विरासत से प्राप्त करना चाहें ।
background
अपने पसंदीदा अर्ध पारदर्शी रंग को हटाना चाहते हैंwindowBackground
इस तरह से अपनी गतिविधि की घोषणा करें:
<activity
android:name=".yourActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
और अपने लेआउट में एक पारदर्शी पृष्ठभूमि जोड़ें।
जिस गतिविधि को आप अपनी परियोजना की Android मेनिफ़ेस्ट फ़ाइल में पारदर्शी बनाना चाहते हैं, उस पारभासी विषय को असाइन करें:
<activity
android:name="YOUR COMPLETE ACTIVITY NAME WITH PACKAGE"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
मैं इसे थोड़ा जोड़ना चाहता था क्योंकि मैं एक नया एंड्रॉइड डेवलपर हूं। स्वीकृत उत्तर बहुत अच्छा है, लेकिन मैं कुछ परेशानी में चला गया। मुझे यकीन नहीं था कि कैसे color.xml फ़ाइल को रंग में जोड़ा जाए। यहां बताया गया है कि यह कैसे किया जाना चाहिए:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="class_zero_background">#7f040000</color>
<color name="transparent">#00000000</color>
</resources>
मेरे मूल रंगों में। Xml फ़ाइल में मेरा टैग "ड्रॉबल" था:
<drawable name="class_zero_background">#7f040000</drawable>
और इसलिए मैंने रंग के लिए भी ऐसा किया, लेकिन मैं यह नहीं समझ पाया कि "@ रंग /" संदर्भ का मतलब XML में "रंग" टैग से है। मैंने सोचा कि मुझे इसका उल्लेख करना चाहिए और साथ ही किसी और की मदद करने के लिए भी।
मैंने इसे केवल प्रदर्शन android:theme="@android:style/Theme.Translucent"
में गतिविधि टैग में जोड़कर 2.3.3 पर हासिल किया ।
मैं कम संस्करणों के बारे में नहीं जानता ...
AppCompatActivity
यदि आप इसका उपयोग कर रहे हैं तो उपयोग न करें ।
मेरे मामले में, मुझे कुछ शर्तों के आधार पर जावा में रनटाइम पर थीम सेट करना होगा। इसलिए मैंने शैली में एक विषय बनाया (अन्य उत्तरों के समान):
<?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 घंटे तक यह सोचता रहा कि मेरी थीम रन टाइम पर क्यों नहीं दिखाई दे रही है।
में onCreate समारोह, नीचे setContentView , इस पंक्ति जोड़ें:
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
सबसे आसान तरीका जो मैंने पाया है वह है एंड्रॉइड मैनफेस्ट में गतिविधि की थीम सेट करना android:theme="@android:style/Theme.Holo.Dialog"
।
फिर गतिविधि की ऑनक्रिट विधि में, कॉल करें getWindow().setBackgroundDrawable(new ColorDrawable(0));
।
संवाद गतिविधि के लिए मैं इसका उपयोग करता हूं:
getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
लेकिन आपको अपने मुख्य दृश्य को अदृश्य करने के लिए गतिविधि में सेट करने की भी आवश्यकता है। अन्यथा पृष्ठभूमि अदृश्य हो जाएगी जबकि इसमें सभी दृश्य दिखाई देंगे।
उपरोक्त उत्तरों के अलावा:
गतिविधि पर 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" />
मैंने सिर्फ दो काम किए, और इसने मेरी गतिविधि को पारदर्शी बना दिया। वे नीचे हैं।
मैनिफ़ेस्ट फ़ाइल में मैंने गतिविधि टैग में केवल नीचे दिया कोड जोड़ा है ।
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
और मैंने अभी उस गतिविधि के लिए मुख्य लेआउट की पृष्ठभूमि को " # 80000000 " के रूप में सेट किया है । पसंद
android:background="#80000000"
यह पूरी तरह से मेरे लिए काम करता है।
यदि आप उपयोग कर रहे हैं 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"
अधिक जानकारी के लिए इस लेख को पढ़ें
का उपयोग Theme.NoDisplay
करना अभी भी काम करेगा ... लेकिन केवल पुराने Android उपकरणों पर। Android 6.0 और बाद के वर्शन में, बुला बिना Theme.NoDisplay का उपयोग कर finish()
में onCreate() (or, technically, before onResume())
होगा दुर्घटना अपने अनुप्रयोग। यही कारण है कि सिफारिश का उपयोग करना है Theme.Translucent.NoTitleBar
, जो इस सीमा से ग्रस्त नहीं है । "
नोट 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>
बस अपनी मैनिफ़ेस्ट फ़ाइल में गतिविधि टैग में निम्न पंक्ति जोड़ें, जिसमें पारदर्शी दिखने की आवश्यकता हो।
android:theme="@android:style/Theme.Translucent"
वे सभी उत्तर भ्रमित करने वाले हो सकते हैं, पारदर्शी गतिविधि और कोई भी यूआई गतिविधि के बीच कोई अंतर नहीं है।
इसका उपयोग करना:
android:theme="@android:style/Theme.Translucent.NoTitleBar"
गतिविधि को पारदर्शी बनाएगा लेकिन UI को अवरुद्ध कर देगा।
यदि आप इसका उपयोग करने की तुलना में कोई भी UI गतिविधि नहीं चाहते हैं:
android:theme="@android:style/Theme.NoDisplay"
<item name="android:windowBackground">@android:color/transparent</item>