আমি কীভাবে অ্যান্ড্রয়েডে একটি স্বচ্ছ ক্রিয়াকলাপ তৈরি করব?


915

আমি অন্য ক্রিয়াকলাপের শীর্ষে একটি স্বচ্ছ ক্রিয়াকলাপ তৈরি করতে চাই।

আমি কীভাবে এটি অর্জন করতে পারি?

উত্তর:


1392

আপনার 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/transparentlater আপনি পরবর্তী Android সংস্করণগুলিতেও ব্যবহার করতে পারেন ))

তারপরে আপনার ক্রিয়াকলাপে শৈলীটি প্রয়োগ করুন, উদাহরণস্বরূপ:

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

13
আমি ব্যবহার করেছি<item name="android:windowBackground">@android:color/transparent</item>
কেউ কেউ কোথাও

33
গ্রেট! একটি মাত্র উন্নতি: আপনি যদি প্যারেন্ট = "@ অ্যান্ড্রয়েড: স্টাইল / থিম.ডায়ালগ" ব্যবহার করেন তবে আপনি একটি কথোপকথনের সঠিক আচরণ পাবেন। এর অর্থ হ'ল / বাইরে স্লাইডের পরিবর্তে
ফিড

73
@ এমিলিও যেমন উল্লেখ করেছেন এটি মূলত android:windowIsFloatingসত্য হিসাবে সেট হওয়ার কারণে এটি একটি কথোপকথনের মতো আচরণ করবে । একটি সাধারণ ক্রিয়াকলাপের মতো আচরণ করার জন্য এই সম্পত্তিটি সরান ( android:style/Theme.Translucent.NoTitleBar
এক্ষেত্রে

38
আমি <আইটেমের নাম = "অ্যান্ড্রয়েড windowIsFloating"> মুছে সত্য </ আইটেমটি> একটি পর্দা জুড়ে প্রদর্শন & স্বচ্ছ কার্যকলাপ আছে
Kiem Duong

12
আমার ক্রিয়াকলাপ থেকে প্রাপ্ত AppCompatActivity। সুতরাং parent="android:Theme"আমার অ্যাপটি ক্র্যাশ করছিল। আমি এটি সরিয়েছি এবং এটি কবজির মতো কাজ করে। ধন্যবাদ!
অতুল

193

এটা এইভাবেই চলে:

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

3
অ্যালেক্স ম্যানিফেস্টে আপনার ক্রিয়াকলাপের ঘোষণায় যেভাবে অ্যালেক্স পোস্ট করেছে - আপনি কেবল থিমটি যুক্ত করেছেন - এই বিট অ্যান্ড্রয়েড: থিম = "@ অ্যান্ড্রয়েড: শৈলী / থিম.ট্রান্সলুসেন্ট.নোটাইটেলবার, প্রতিটি ক্রিয়াকলাপের জন্য আপনি এটিকে ট্রান্সলুসেন্ট থিম বরাদ্দ করতে পারেন
ডোনাল রাফার্টি

12
@ ইউএমএ: একটি প্রশ্ন চিহ্ন ব্যবহার করা সাধারণত পর্যাপ্ত। একাধিক প্রশ্ন চিহ্নগুলি আপনার প্রশ্নের উত্তর দেওয়ার জন্য সময় দেয় এমন লোকদের মনে করে যে আপনি তাদের মুখে ঝাঁপিয়ে পড়ছেন।
ম্যাথিয়াস

7
@ মাথিয়াস তারা সাধারণত, কারণ তাদের মনিবরা তাদের দিকে ঝাঁপিয়ে পড়েছেন
রেনো

16
@ user1129443: 50% black should be #7f000000। প্রতিটি উপাদান (এ, আর, জি, বি) এর থেকে মান নিতে পারে 0-25550% of 255 = 127. 127 in Hex = 7Fযেভাবে স্বচ্ছতা (অস্বচ্ছতা) গণনা করা যায়
নম ট্রুং

4
ক্রিয়াকলাপটি চলমান হওয়ায় এই পদ্ধতিতে ইউআইটিকে লক করা হয় তবে এটি যেহেতু রূপান্তরিত হিসাবে সেট করা থাকে, তাই কেউ কিছু করতে পারে না this এই ইউআই লকিং এড়ানোর কোনও উপায় আছে।
আখিল লাট্টা

126

শৈলীতে। এক্সএমএল:

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

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল:

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

1
যদি আপনি এই ক্রিয়াকলাপে আসলে কিছু প্রদর্শন করার পরিকল্পনা করে থাকেন (একটি ডায়ালগ বা ডায়ালগফ্রেগমেন্ট বলুন), আপনি লক্ষ্য করবেন যে সবকিছু ডার্ক থিমযুক্ত। সুতরাং আপনি চাইলে Theme.Appcompat.Light.NoActionBarপরিবর্তে আপনার থিমটি উত্তরাধিকার সূত্রে পেতে পারেন ।
tir38

1
আমার ক্ষেত্রে এটি কালো পটভূমি দেখায় parent আমার পিতামাতার থিমটি অন্য কিছু সেট করেছে তবে একটি নির্দিষ্ট ক্রিয়াকলাপে আমি উল্লিখিত হিসাবে থিম পরিবর্তন করছি? কোন সাহায্য?
আবদুল ওয়াহেদ

4
আমি "অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড" অপসারণ করার সময় দুর্দান্ত কাজ করে
ওডেড ব্রেইনার

2
আমি মনে করি সরাতে চান backgroundএবং আপনার পছন্দের আধা স্বচ্ছ রঙ করাwindowBackground
hmac

আপনার ক্রিয়াকলাপটি @ gnobal এর উত্তরের বিপরীতে AppCompatActivity ব্যবহার করে থাকলে এই উত্তরটি হওয়া উচিত।
এয়ারোচেলন

37

আপনার ক্রিয়াকলাপটি ম্যানিফেস্টে এইভাবে ঘোষণা করুন:

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

এবং আপনার বিন্যাসে একটি স্বচ্ছ পটভূমি যুক্ত করুন।


সবচেয়ে ভালো উপায়. ধন্যবাদ
পিটার

5
এই ক্রিয়াকলাপ সহ আপনার একটি থিম.অ্যাপকম্প্যাট থিম (বা বংশধর) ব্যবহার করা দরকার।
পুনি

28

আপনার প্রকল্পের অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলটিতে আপনি স্বচ্ছ করতে চান এমন ক্রিয়াকলাপের জন্য স্বচ্ছ থিম বরাদ্দ করুন:

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

16

আমি এটিকে কিছুটা যুক্ত করতে চেয়েছিলাম কারণ আমিও একজন নতুন অ্যান্ড্রয়েড বিকাশকারী। গৃহীত উত্তরটি দুর্দান্ত তবে আমি কিছুটা সমস্যায় পড়েছি। আমি কীভাবে রং.এক্সএমএল ফাইলটিতে রঙ যুক্ত করব তা নিশ্চিত ছিলাম না। এটি কীভাবে করা উচিত তা এখানে:

colors.xml

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

আমার আসল রং.এক্সএমএল ফাইলটিতে আমার কাছে "অঙ্কনীয়" ট্যাগটি ছিল:

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

এবং তাই আমি রঙের জন্য এটিও করেছি, তবে আমি বুঝতে পারিনি যে "@ রঙ /" রেফারেন্সটি এক্সএমএলে "রঙ" ট্যাগটির সন্ধান করবে। আমি ভেবেছিলাম যে অন্য কারও সাহায্য করার জন্য আমারও এটি উল্লেখ করা উচিত।


16

আমি এটি যোগ করে ২.৩.৩ এ অর্জন করেছি android:theme="@android:style/Theme.Translucent" ম্যানিফেস্টে ক্রিয়াকলাপ ট্যাগ ।

আমি নিম্ন সংস্করণগুলি সম্পর্কে জানি না ...


এটি ২.২ এর জন্যও জরিমানা কাজ করে। আমি কেবল একটি তালিকা দর্শন সহ একটি সাধারণ ক্রিয়াকলাপ তৈরি করেছি এবং এটি শেষ ক্রিয়াকলাপের শীর্ষে ভাসছে।
স্লট করুন

এটি এপিআই 1 এ যুক্ত হয়েছিল, এটি কোনও সমস্যা নয় :)
xmen

6
আপনি AppCompatActivityযদি এটি ব্যবহার করছেন তবে ব্যবহার করবেন না ।
জ্যাকিগৌরভ

7.0 এও কাজ করে তাই এর ভাল পদ্ধতির। আমি এটি @ অ্যান্ড্রয়েড: স্টাইল / থিম.ট্রান্সলুসেন্ট.নো টাইটেলবার.ফুলস্ক্রিন
সন্দীপ

16

আমার ক্ষেত্রে, আমাকে কিছু শর্তের ভিত্তিতে জাভাতে রানটাইমের উপর থিমটি সেট করতে হবে। সুতরাং আমি শৈলীতে একটি থিম তৈরি করেছি (অন্যান্য উত্তরের মতো):

<?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 ঘন্টা ধরে আটকালাম।


9

ইন onCreate ফাংশন, নিচের setContentView , এই লাইন যোগ করুন:

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

23
কোনও কারণে পুরোপুরি কালোতে ব্যাকগ্রাউন্ড তৈরি করে।
সাবিন সেবাস্তিয়ান

আমার খুব @ সুবিনসেবাস্তিয়ান, কেউ কি এর কোনও সমাধান খুঁজে পেয়েছেন?
ফিনমগ্লাস

8

ক্রিয়াকলাপের ব্যাকগ্রাউন্ড চিত্রটি স্বচ্ছ হতে দিন। অথবা এক্সএমএল ফাইলটিতে থিম যুক্ত করুন:

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

7

আমি খুঁজে পেয়েছি সবচেয়ে সহজ উপায় অ্যান্ড্রয়েড ম্যানিফেস্টে ক্রিয়াকলাপের থিম সেট করা android:theme="@android:style/Theme.Holo.Dialog"

তারপরে ক্রিয়াকলাপের অনক্রিট পদ্ধতিতে কল করুন getWindow().setBackgroundDrawable(new ColorDrawable(0));


6

সংলাপ ক্রিয়াকলাপের জন্য আমি এটি ব্যবহার করি:

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

তবে আপনাকে অদৃশ্য হয়ে যাওয়ার জন্য ক্রিয়াকলাপে আপনার মূল দৃষ্টিভঙ্গিও সেট করতে হবে। অন্যথায় পটভূমি অদৃশ্য হয়ে যাবে তবে এতে সমস্ত দর্শন দৃশ্যমান হবে।


2
ব্যাকগ্রাউন্ডটি পুরোপুরি কালো করে তোলে
ucMedia

5

উপরের উত্তরগুলি ছাড়াও:

ক্রিয়াকলাপে অ্যান্ড্রয়েড ওরিও সম্পর্কিত ক্রাশ এড়াতে

<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 হিসাবে, এটি সেরা উত্তর
গিক গাই

আমাকে
কেউ কোথাও

অ্যান্ড্রয়েড 8.0 এ ওরিয়েন্টেশন স্থাপনের সাথে সম্পর্কিত ক্র্যাশটি সংশোধন করার জন্য আমি এটি চেষ্টা করেছি তবে আমি এখনও অবৈধ স্টেট এক্সপশন পাচ্ছি: কেবলমাত্র পূর্ণস্ক্রিন অস্বচ্ছ ক্রিয়াকলাপের জন্য ওরিয়েন্টেশন অনুরোধ
রাহুল সাহনি

3

আমি সবেমাত্র দুটি কাজ করেছি এবং এটি আমার ক্রিয়াকলাপটিকে স্বচ্ছ করে তুলেছে। তারা নীচে আছে।

  1. মেনিফেস্ট ফাইলে আমি কেবলমাত্র ক্রিয়াকলাপ ট্যাগের নীচের কোডটি যুক্ত করেছি ।

    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
  2. এবং আমি এই ক্রিয়াকলাপের জন্য " # 80000000 " হিসাবে মূল বিন্যাসের ব্যাকগ্রাউন্ড সেট করেছি । মত

    android:background="#80000000"

এটি পুরোপুরি আমার জন্য কাজ করে works


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"

আরও তথ্যের জন্য এই নিবন্ধ পড়ুন


2

এটিকে স্বচ্ছ থিম বরাদ্দ করুন

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

2

দুটি উপায় আছে:

  1. থিম.নো ডিসপ্লে ব্যবহার করা হচ্ছে
  2. থিম.ট্রান্সলুসেন্ট.নো টাইটেলবার ব্যবহার করা হচ্ছে

ব্যবহার Theme.NoDisplayকরা এখনও কার্যকর হবে ... তবে কেবলমাত্র পুরানো Android ডিভাইসে। অ্যান্ড্রয়েড .0.০ এবং উচ্চতরতে, থিম.নো ডিসপ্লে ব্যবহার না করে আপনার অ্যাপ্লিকেশনটি ক্রাশfinish() হয়ে onCreate() (or, technically, before onResume())যাবে । এজন্যই এই প্রস্তাবটি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে , যা এই সীমাবদ্ধতায় ভুগছে না । "Theme.Translucent.NoTitleBar


1

নোট 1: অঙ্কনযোগ্য ফোল্ডারে টেস্ট.এক্সএমএল তৈরি করুন এবং নিম্নলিখিত কোডটি অনুলিপি করুন

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

এই সমস্ত উত্তরগুলি বিভ্রান্তিকর হতে পারে, স্বচ্ছ ক্রিয়াকলাপ এবং কোনও ইউআই ক্রিয়াকলাপের মধ্যে পার্থক্য রয়েছে।

এটি ব্যবহার করে:

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

ক্রিয়াকলাপটিকে স্বচ্ছ করে তুলবে তবে ইউআইকে ব্লক করবে।

আপনি যদি এটি ব্যবহার না করে কোনও ইউআইআই ক্রিয়াকলাপ চান:

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


0

আপনি setContentView(R.layout.mLayout)আপনার ক্রিয়াকলাপ থেকে সরান এবং হিসাবে থিম সেট করতে পারেন android:theme="@style/AppTheme.Transparent"। আরও তথ্যের জন্য এই লিঙ্কটি দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.