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

Android Switch विजेट को कस्टम स्टाइल कैसे दें?

परिचय

यह ट्यूटोरियल दिखाता है कि Android Switch विजेट को कस्टम ड्रॉएबल्स से कैसे स्टाइल करें - थंब (सर्कल) और ट्रैक (बैकग्राउंड) दोनों के लिए अलग-अलग स्टेट्स (ON/OFF) में।

आवश्यक चरण

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

Android Studio में File → New Project से नया प्रोजेक्ट बनाएं।

चरण 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"
    android:padding="4dp"
    android:id="@+id/relativeLayout"
    tools:context=".MainActivity">

    <Switch
        android:id="@+id/switchBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textOn="चालू"
        android:textOff="बंद"
        android:thumb="@drawable/customswitchselector"
        android:track="@drawable/custom_track"
        android:layout_centerInParent="true" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/switchBtn"
        android:layout_marginTop="20dp"
        android:text="स्विच ऑन/ऑफ करें"
        android:textSize="24sp"
        android:textAlignment="center"
        android:textStyle="bold" />

</RelativeLayout>

चरण 3: थंब सेलेक्टर (res/drawable/customswitchselector.xml)

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

    <!-- ON स्टेट -->
    <item android:state_checked="true">
        <shape android:dither="true" android:shape="rectangle" android:useLevel="false" android:visible="true">
            <corners android:radius="15dp" />
            <gradient
                android:angle="270"
                android:startColor="#66AAFF00"
                android:endColor="#6600FF00" />
            <size android:width="37dp" android:height="37dp" />
            <stroke android:width="4dp" android:color="#0000FFFF" />
        </shape>
    </item>

    <!-- OFF स्टेट -->
    <item android:state_checked="false">
        <shape android:dither="true" android:shape="rectangle" android:useLevel="false" android:visible="true">
            <corners android:radius="15dp" />
            <gradient
                android:angle="270"
                android:startColor="#FF0000"
                android:endColor="#FF0000" />
            <size android:width="37dp" android:height="37dp" />
            <stroke android:width="4dp" android:color="#0000FFFF" />
        </shape>
    </item>

</selector>

चरण 4: ट्रैक ड्रॉएबल (res/drawable/custom_track.xml)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:visible="true"
    android:dither="true"
    android:useLevel="false">

    <gradient
        android:startColor="#27170432"
        android:endColor="#27170432"
        android:angle="270" />

    <corners android:radius="15dp" />
    <size android:width="80dp" android:height="40dp" />

</shape>

चरण 5: मुख्य गतिविधि (src/MainActivity.java)

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Switch aSwitch;

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

        aSwitch = findViewById(R.id.switchBtn);

        aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    Toast.makeText(MainActivity.this, "स्विच चालू", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "स्विच बंद", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

चरण 6: मैनिफेस्ट फ़ाइल (AndroidManifest.xml)

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

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

    </application>
</manifest>

ऐप चलाएं

डिवाइस कनेक्ट करें, Run क्लिक करें। स्विच टॉगल करें - थंब रंग बदलेगा (लाल ↔ हरा ग्रेडिएंट) और टोस्ट दिखेगा।

Android Switch विजेट को कस्टम स्टाइल कैसे दें?

Switch स्टाइलिंग के मुख्य बिंदु

एट्रिब्यूटउद्देश्यउदाहरण
android:thumbड्रैग करने वाला सर्कल/शेप@drawable/selector (स्टेट-लिस्ट)
android:trackबैकग्राउंड ट्रैक@drawable/shape
android:textOn/Offलेबल टेक्स्ट"ON"/"OFF" या "चालू"/"बंद"
android:switchTextAppearanceटेक्स्ट स्टाइल@style/CustomSwitchText
android:thumbTintथंब टिंट (API 21+)@color/selector
android:trackTintट्रैक टिंट (API 21+)@color/selector

सरल टिंट-ओनली तरीका (API 21+, कोई ड्रॉएबल नहीं)

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumbTint="@color/switch_thumb_selector"
    android:trackTint="@color/switch_track_selector" />

res/color/switch_thumb_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#4CAF50" />  <!-- हरा -->
    <item android:state_checked="false" android:color="#F44336" /> <!-- लाल -->
</selector>

res/color/switch_track_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#81C784" />  <!-- हल्का हरा -->
    <item android:state_checked="false" android:color="#EF9A9A" /> <!-- हल्का लाल -->
</selector>

Material Components Switch (अनुशंसित)

<com.google.android.material.switchmaterial.SwitchMaterial
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="नोटिफिकेशन"
    app:thumbTint="@color/switch_thumb_selector"
    app:trackTint="@color/switch_track_selector" />

Material Switch बेहतर टच टार्गेट, रिपल इफेक्ट, और एक्सेसिबिलिटी देता है।

  1. Android में URL एन्कोड कैसे करें? Android में URL एन्कोड कैसे करें?

    परिचय यह ट्यूटोरियल दिखाता है कि Android में URL एन्कोडिंग कैसे करें। स्पेशल कैरेक्टर्स (स्पेस, हिंदी टेक्स्ट, सिम्बल्स) को URL-सेफ फॉर्मेट में बदलने के लिए URLEncoder क्लास का उपयोग करते हैं। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project से नया प्रोजेक्ट बनाएं। चरण

  1. ब्लैकबेरी से एंड्रॉयड पर कैसे स्विच करें ब्लैकबेरी से एंड्रॉयड पर कैसे स्विच करें

    इस साल की शुरुआत में, मैंने एक टैक्सी में अपना ब्लैकबेरी खो दिया। अपना फोन खोना अनिवार्य रूप से एक दर्दनाक अनुभव है। मैं केवल आपकी तस्वीरों, संदेशों और यादों को खोने की बात नहीं कर रहा हूं, हालांकि यह निश्चित रूप से बेकार है। बल्कि, यह वह है जो बाद में आता है। अपने नेटवर्क के साथ होल्ड पर बिताए घंट

  1. आईफोन से एंड्रॉइड पर सहजता से स्विच करें: एक पूर्ण मार्गदर्शिका आईफोन से एंड्रॉइड पर सहजता से स्विच करें: एक पूर्ण मार्गदर्शिका

    आईफोन Apple द्वारा डिजाइन किया गया एक स्मार्टफोन है, जो न केवल एक उत्कृष्ट उपकरण है बल्कि एक स्टेटस सिंबल भी है, या कम से कम यह था! हालांकि, फोन निर्माताओं द्वारा पेश किए गए नवीनतम एंड्रॉइड सॉफ्टवेयर और स्मार्ट तकनीकों के साथ, एक एंड्रॉइड फोन भी एक अच्छा विकल्प है। क्या आपने एक नया फोन खरीदा है और स