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




android-activity transparent (13)

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

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


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

  1. Theme.Display ব্যবহার করে
  2. থিম ব্যবহার করে। ট্রান্সস্পেসেন্ট। টিটলবার বার

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


"অ্যাপকমটপ্যাট" লাইব্রেরি বা "অ্যান্ড্রয়েড ডিজাইন সাপোর্ট লাইব্রেরি" এর সাথে এটি কিছুটা ভিন্ন:

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>

AndroidManifest.xml এ:

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

আপনার মেনিফেস্ট ফাইলে কার্যকলাপের ট্যাগটিতে কেবল নিম্নোক্ত লাইন যুক্ত করুন যা স্বচ্ছ দেখতে হবে।

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

আপনি AppCompatActivity ব্যবহার AppCompatActivity তাহলে AppCompatActivity যোগ করুন

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

আরো বিস্তারিত জানার জন্য এই article


আমি android:theme="@android:style/Theme.Translucent" যুক্ত করে 2.3.3 এ এটি অর্জন করেছি android:theme="@android:style/Theme.Translucent" ম্যানিফেস্টের কার্যকলাপ ট্যাগে android:theme="@android:style/Theme.Translucent"

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


আমি এটিকে আরও একটু যুক্ত করতে চেয়েছিলাম কারণ আমিও একটি নতুন Android বিকাশকারী। গ্রহণযোগ্য উত্তর মহান, কিন্তু আমি কিছু সমস্যা মধ্যে চালানো হয়েছে। আমি রঙ.এক্সএমএল ফাইল রঙ যোগ করতে কিভাবে নিশ্চিত ছিল না। এখানে কী করা উচিত তা এখানে:

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>

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


উপরে উত্তর ছাড়াও:

কার্যকলাপ উপর অ্যান্ড্রয়েড 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" />

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

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

এবং আপনার লেআউট একটি স্বচ্ছ ব্যাকগ্রাউন্ড যোগ করুন।


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

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

ডায়লগ কার্যকলাপের জন্য আমি এই ব্যবহার করি:

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

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


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

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

android:theme="@android:style/Theme.Holo.Dialog" কার্যকলাপের থিম সেট করার সবচেয়ে সহজ উপায় হল android:theme="@android:style/Theme.Holo.Dialog"android:theme="@android:style/Theme.Holo.Dialog"android:theme="@android:style/Theme.Holo.Dialog"

তারপর কার্যকলাপের getWindow().setBackgroundDrawable(new ColorDrawable(0)); পদ্ধতিতে, getWindow().setBackgroundDrawable(new ColorDrawable(0));


আপনার 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 ফাইলে res/values/color.xml । এছাড়াও আপনি অ্যান্ড্রয়েড সংস্করণগুলিতে @android:color/transparent ব্যবহার করতে পারেন।)

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

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




transparent