কম্পিউটার

আপনার অ্যান্ড্রয়েড অ্যাপে কীভাবে একটি ডার্ক থিম অন্তর্ভুক্ত করবেন

বিকাশকারীদের জন্য, একটি Android অ্যাপ তৈরি করা একটি সহজ প্রক্রিয়া - একটি আকর্ষণীয় UI ডিজাইন করা আসলেই কঠিন। সেই কারণেই আমরা গাইড লিখেছি "কীভাবে একটি অ্যান্ড্রয়েড অ্যাপ UI ডিজাইন করবেন যা চুষে যায় না", এমন ডেভেলপারদের জন্য যাদের সহজ কিন্তু আকর্ষণীয় UI তৈরি করতে কিছু অনুপ্রেরণা প্রয়োজন। সেই নির্দেশিকায় আমরা সংক্ষিপ্তভাবে আপনার অ্যাপে একটি অন্ধকার/নাইট মোড থিম যোগ করার কথা উল্লেখ করেছি এবং এই নির্দেশিকায় আমরা আপনাকে এটির মধ্য দিয়ে যাব।

আপনার অ্যাপে একটি অন্ধকার/নাইট মোড থিম যোগ করা আপনার ব্যবহারকারীদের জন্য একটি দুর্দান্ত বিকল্প হতে পারে - এটি ব্যাটারি জীবন বাঁচায় এবং রাতে চোখের জন্য অনেক সহজ। কালো টেক্সটের সাদা ব্যাকগ্রাউন্ড, অথবা আপনার UI-তে 'উজ্জ্বল' রঙের যেকোন সংমিশ্রণ চোখের উপর সত্যিই চাপ সৃষ্টি করে, বিশেষ করে রাতে। সুতরাং, হালকা টেক্সট সহ একটি গাঢ় পটভূমি চোখের জন্য অনেক কম চাপযুক্ত এবং ক্ষতিকারক, এই কারণেই অনেক জনপ্রিয় অ্যাপগুলি একটি অন্ধকার থিম সহ শুরু করেছে - ইউটিউব এবং রেডিট সম্প্রতি, যদিও ফেসবুক এখনও তাদের প্রকাশ করেনি। মে।

আপনি যদি সহজেই আপনার অ্যান্ড্রয়েড অ্যাপে একটি টগলযোগ্য ডার্ক মোড যোগ করতে চান, তাহলে এই Appuals নির্দেশিকা অনুসরণ করুন এবং কোনো সমস্যায় পড়লে মন্তব্য করুন!

XML গুণাবলী তৈরি করা

প্রথমে আপনাকে একটি XML অ্যাট্রিবিউট ফাইল তৈরি করতে হবে যা থিমিং পরিচালনা করবে। দুটি ভিন্ন থিমের জন্য আপনার APK-এ দুটি সেট রিসোর্স অন্তর্ভুক্ত করার চেয়ে এটি অনেক ভালো, এবং এইভাবে আপনার APK আকারকে ফুলিয়ে তোলা, কারণ Android এই XML-এর মাধ্যমে অ্যাট্রিবিউটে রঙ পরিবর্তন করতে পারে।

তাই আপনার অ্যাপের 'রিসোর্স' ফোল্ডারে attrs.xml নামে একটি ফাইল তৈরি করুন এবং এই লাইনগুলি যোগ করুন (এগুলি শৈলীযোগ্য বৈশিষ্ট্য):

<declare-styleable name="CTAppTheme">
      <attr name=”primaryTextColor” format=”color”/> 
      <attr name=”secondaryTextColor” format=”color”/> 
      <attr name=”dividerColor” format=”color”/>
      <attr name=”backgroundCardColor” format=”color”/> 
      <attr name=”iconPlaceholder” format=”integer”/>
</declare-styleable>

ললিপপের আগে আমরা অঙ্কনযোগ্যগুলির জন্য বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারতাম না, তাই আমাদেরকে অঙ্কনযোগ্যগুলির জন্য সংস্থান আইডিগুলি নির্দিষ্ট করতে হয়েছিল - তবে, এটি আর হয় না৷

স্টাইলগুলি যোগ করা

এই কাজটি করার জন্য, আমাদের দুটি পৃথক শৈলী তৈরি করতে হবে যা একই বেস ভাগ করবে। প্রথমটি অবশ্যই আপনার প্রাথমিক 'হালকা' থিম হবে এবং দ্বিতীয়টি হবে আপনার 'অন্ধকার' থিম।

<!-- Light base activity theme -->
<style name="ActivityTheme.Primary.Base.Light" parent="Theme.AppCompat.NoActionBar">
    <item name="primaryTextColor">#F4F4F6</item>
    <item name="secondaryTextColor">#96F4F4F6</item>
    <item name="backgroundCardColor">#FFFF</item>
    <item name="dividerColor">#F2F2F3</item>
    <item name="iconPlaceholder">@drawable/i_light_plholder</item>
</style>

<!-- Dark base activity theme -->
<style name="ActivityTheme.Primary.Base.Dark"    parent="Theme.AppCompat.NoActionBar">
    <item name="primaryTextColor">#33343B/item>
    <item name="secondaryTextColor">#8033343B</item>
    <item name="backgroundCardColor">#28292e</item>
    <item name="dividerColor">#F2F2F3</item>
    <item name="iconPlaceholder">@drawable/i_dark_pholder</item>
</style>

এখানে একটি প্রদত্ত কার্যকলাপের জন্য প্রকৃত শৈলী রয়েছে:

<!-- Specific Feed activity theme -->
<style name="FeedActivityThemeLight" parent="ActivityTheme.Primary.Base.Light">
    <item name="android:windowBackground">#F4F4F6</item>
</style>

<style name="FeedActivityThemeDark" parent="ActivityTheme.Primary.Base.Dark">
    <item name="android:windowBackground">#33343B</item>
</style>

অ্যাপের কার্যকলাপের জন্য ম্যানিফেস্টে আপনাকে এই থিমগুলির মধ্যে একটি নির্দিষ্ট করতে হবে, যা এই ক্ষেত্রে FeedActivity।

দর্শনগুলিকে স্টাইলাইজ করা

এখানে আপনার ভিউ স্টাইলাইজ করার একটি উদাহরণ দেওয়া হল – এই উদাহরণে, এটি একটি "পৃষ্ঠা পাওয়া যায়নি" রিডাইরেক্ট ত্রুটির জন্য৷

<ImageView
           android:id="@+id/placeHolderAssetImageView"
           android:layout_width="100dp"
           android:layout_height="100dp"
           android:src="?attr/iconPlaceholder"
           android:layout_marginBottom="8dp" />

       <TextView
           android:id="@+id/placeHolderTitleTextView"
           android:text="Page not found."
           android:textSize="16dp"
           android:textColor="?attr/primaryTextColor"
           android:layout_margin="16dp" />

কিভাবে ডায়নামিক থিম স্যুইচিং সক্ষম করবেন

ডাইনামিক থিম স্যুইচিং সক্ষম করার সর্বোত্তম এবং সবচেয়ে কার্যকর উপায় হল শেয়ারডপ্রেফারেন্স লোড করা যা সিঙ্গেলটন প্যাটার্ন ব্যবহার করে অ্যাপ্লিকেশন ইন্সট্যান্সে সেটিং সংরক্ষণ করতে ব্যবহৃত হয়, যার মানে প্রতিটি কার্যকলাপের শুরুতে আমাদের এটি করতে হবে না।

public class App extends Application {
 public static final String TAG = "App";

private boolean isNightModeEnabled = false;

@Override
 public void onCreate() {
 super.onCreate();

// We load the Night Mode state here
 SharedPreferences mPrefs =  PreferenceManager.getDefaultSharedPreferences(this);
 this.isNightModeEnabled = mPrefs.getBoolean(“NIGHT_MODE”, false);
 }

public boolean isNightModeEnabled() {
 return isNightModeEnabled;
 }

public void setIsNightModeEnabled(boolean isNightModeEnabled) {
 this.isNightModeEnabled = isNightModeEnabled;
 }
}

যেহেতু এই উদাহরণটি অন্য কিছুর আগে চালু করা হচ্ছে, এটি আপনাকে isNightModeEnabled() কল করার অনুমতি দেয় যখনই আপনি চান বুলিয়ান, অ্যাপটি খোলা হয়ে গেলে এর সাথে সম্পর্কিত যেকোন কার্যকলাপে।

public final class FeedActivity extends AppCompatActivity {
 private final static String TAG = “FeedActivity”;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    if (MyApplication.getInstance().isNightModeEnabled()) {
       setTheme(R.style.FeedActivityThemeDark);
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_feed);
 }
}

যাইহোক, আপনি যদি ম্যানিফেস্ট ফাইলে উল্লেখিত থিমটির চেয়ে ভিন্ন থিম প্রয়োগ করতে চান, তাহলে এটি আগে করতে হবে অভিভাবককে কল করা onCreate() পদ্ধতি।

অ্যাপকম্প্যাট ব্যবহার করে স্টেট সেট করা

AppCompat জিনিসের বিস্তৃত পরিসরের জন্য সত্যিই দরকারী, এবং এই ক্ষেত্রে, আমরা মোড অবস্থা সেট করতে এটি ব্যবহার করব। এর মানে হল যে আপনাকে আর একটি ক্যাশড স্টেট তৈরি করতে অ্যাপ ইনস্ট্যান্স ব্যবহার করতে হবে না, এইভাবে অ্যাপ ক্যাশে ব্লোট কমানো হবে (যদিও খুব সামান্য ব্যবধানে )।

AppCompatDelegate
.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

এখানে, আপনি হয় ব্যবহার করতে পারেন:

  • AppCompatDelegate.MODE_NIGHT_YES
    AppCompatDelegate.MODE_NIGHT_NO
    AppCompatDelegate.MODE_NIGHT_AUTO

স্টেট পুনরুদ্ধার করা হচ্ছে

AppCompatDelegate.getDefaultNightMode();

public final class FeedActivity extends AppCompatActivity {
 private final static String TAG = “FeedActivity”;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    if (AppCompatDelegate.getDefaultNightMode()
    ==AppCompatDelegate.MODE_NIGHT_YES) {
       setTheme(R.style.FeedActivityThemeDark);
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_feed);
 }
}

এটি হওয়া উচিত - আপনি আপনার পছন্দ অনুযায়ী মানগুলি কাস্টমাইজ এবং টুইক করা চালিয়ে যেতে পারেন, তবে এই নির্দেশিকাটি আপনাকে একটি নেটিভ  সহ শুরু করার জন্য একটি দুর্দান্ত ভূমিকা। আপনার অ্যান্ড্রয়েড অ্যাপে গাঢ় থিম।


  1. এন্ড্রয়েডে আপনার ডিফল্ট অ্যাপগুলি কীভাবে পরিবর্তন করবেন

  2. অ্যান্ড্রয়েডে আপনার আইপি ঠিকানা কীভাবে লুকাবেন

  3. আপনার দেশে উপলব্ধ নয় এমন Android অ্যাপগুলি কীভাবে ডাউনলোড করবেন

  4. এন্ড্রয়েডে আপনার মূল্যবান ফটোগুলি কীভাবে লুকাবেন?