Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में स्टेटस बार का रंग ऐप थीम से कैसे मिलाएं

Window API का उपयोग करके स्टेटस बार रंग बदलना (API 21+)

एंड्रॉइड 5.0 (लॉलीपॉप) से, ऐप्स स्टेटस बार का रंग प्रोग्रामेटिकली या थीम के माध्यम से बदल सकते हैं। यह ऐप की ब्रांडिंग के साथ सुसंगत UI बनाने के लिए उपयोगी है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में प्रोजेक्ट बनाएं (minSdk 21+ अनुशंसित)।

चरण 2: लेआउट फ़ाइल

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="48dp" <!-- स्टेटस बार ऊंचाई के लिए मार्जिन -->
        android:gravity="center"
        android:text="स्टेटस बार रंग ऐप थीम से मेल खाता है"
        android:textAlignment="center"
        android:textSize="18sp"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: MainActivity में प्रोग्रामेटिकली रंग सेट करें

package com.app.sample;

import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // विधि 1: प्रोग्रामेटिकली (API 21+)
        setStatusBarColorProgrammatically();

        // विधि 2: थीम के माध्यम से (styles.xml में) - नीचे देखें
    }

    private void setStatusBarColorProgrammatically() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();

            // 1. सिस्टम बार बैकग्राउंड ड्रॉ करने की अनुमति दें
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

            // 2. ट्रांसलूसेंट स्टेटस बार फ्लैग हटाएं (यदि सेट हो)
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

            // 3. स्टेटस बार रंग सेट करें
            // विकल्प A: रंग संसाधन से
            window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));

            // विकल्प B: सीधे रंग मान से
            // window.setStatusBarColor(Color.parseColor("#00574B"));

            // विकल्प C: पारदर्शी स्टेटस बार (कंटेंट पीछे दिखे)
            // window.setStatusBarColor(Color.TRANSPARENT);
        }
    }
}

चरण 4: रंग संसाधन परिभाषित करें

res/values/colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color> <!-- स्टेटस बार के लिए -->
    <color name="colorAccent">#D81B60</color>
    <color name="statusBarColor">#00574B</color> <!-- कस्टम स्टेटस बार रंग -->
</resources>

चरण 5: थीम के माध्यम से स्टेटस बार रंग (अनुशंसित)

res/values/styles.xml (या res/values-v21/styles.xml API 21+ के लिए):

<resources>
    <!-- बेस थीम -->
    <style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <!-- API 21+ के लिए स्टेटस बार रंग -->
    <style name="Theme.MyApp.StatusBar" parent="Theme.MyApp">
        <item name="android:statusBarColor">@color/statusBarColor</item>
        <item name="android:navigationBarColor">@color/colorPrimaryDark</item>
        <!-- लाइट/डार्क स्टेटस बार आइकन्स (API 23+) -->
        <item name="android:windowLightStatusBar">false</item> <!-- true = डार्क आइकन्स -->
    </style>

    <!-- पारदर्शी स्टेटस बार के लिए (एज-टू-एज) -->
    <style name="Theme.MyApp.TransparentStatusBar" parent="Theme.MyApp">
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:windowLightStatusBar">false</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    </style>
</resources>

चरण 6: थीम को एक्टिविटी/ऐप पर लागू करें

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.app.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyApp.StatusBar"> <!-- यहाँ थीम लागू करें -->

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

एडवांस्ड: डायनामिक स्टेटस बार रंग (स्क्रॉल पर बदलें)

// NestedScrollView/RecyclerView स्क्रॉल लिस्टनर में
nestedScrollView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
    if (scrollY > 200) {
        // स्क्रॉल होने पर रंग बदलें
        window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));
    } else {
        // शीर्ष पर पारदर्शी
        window.setStatusBarColor(Color.TRANSPARENT);
    }
});

एज-टू-एज डिस्प्ले (एंड्रॉइड 11+ / API 30+)

// आधुनिक WindowInsetsController API
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowInsetsController controller = getWindow().getInsetsController();
    if (controller != null) {
        // स्टेटस बार रंग
        controller.setSystemBarsAppearance(
            WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS, // या 0 डार्क के लिए
            WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
        );
        // या सीधे रंग
        getWindow().setStatusBarColor(Color.TRANSPARENT); // पारदर्शी
    }
} else {
    // लीगेसी
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(Color.TRANSPARENT);
    window.getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    );
}

स्टेटस बार आइकन रंग (लाइट/डार्क मोड)

एट्रिब्यूटAPI स्तरप्रभाव
android:windowLightStatusBar23+true = डार्क आइकन्स (लाइट बैकग्राउंड के लिए), false = लाइट आइकन्स
android:windowLightNavigationBar27+नेविगेशन बार आइकन्स के लिए समान
 उपयुक्त सेट करें।

            
  1. Android ListView का रंग और फॉन्ट कैसे बदलें? Android ListView का रंग और फॉन्ट कैसे बदलें?

    Android ListView के रंग और फॉन्ट कस्टमाइज़ करना यह ट्यूटोरियल दिखाता है कि कैसे कस्टम एडाप्टर और लेआउट का उपयोग करके ListView आइटम्स के टेक्स्ट रंग, बैकग्राउंड रंग, और फॉन्ट स्टाइल बदले जाते हैं। चरण 1: प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: मेन लेआउट res/layout/activity_ma

  1. एंड्रॉइड में स्टेटस बार की ऊंचाई कैसे प्राप्त करें एंड्रॉइड में स्टेटस बार की ऊंचाई कैसे प्राप्त करें

    एंड्रॉइड में स्टेटस बार की ऊंचाई जानने का तरीका एंड्रॉइड ऐप विकास में कई बार हमें स्टेटस बार की सटीक ऊंचाई जानने की आवश्यकता होती है, खासकर जब हम फुल-स्क्रीन लेआउट या कस्टम UI बना रहे हों। यह उदाहरण दर्शाता है कि प्रोग्रामेटिक रूप से स्टेटस बार की ऊंचाई कैसे प्राप्त की जाए। चरण 1: नया प्रोजेक्ट बना

  1. एंड्रॉइड ऐप आइकन कस्टमाइज़ करना: एक सरल चरण-दर-चरण गाइड एंड्रॉइड ऐप आइकन कस्टमाइज़ करना: एक सरल चरण-दर-चरण गाइड

    Android ऑपरेटिंग सिस्टम के बारे में सबसे अच्छी बात यह है कि यह अत्यधिक कस्टमाइज़ेबल है। उन ऐप्स से जिन्हें आप अपने डिवाइस पर रखना चुनते हैं, समग्र इंटरफ़ेस, ट्रांज़िशन, सामान्य उपस्थिति, और यहां तक कि आइकन तक, सब कुछ बदला जा सकता है। यदि आप अपने फोन के वर्तमान लुक से ऊब महसूस कर रहे हैं, तो आगे बढ़े