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

एंड्रॉइड में ViewFlipper का उपयोग कैसे करें?

एंड्रॉइड में ViewFlipper के साथ व्यू फ्लिपिंग एनिमेशन

यह ट्यूटोरियल ViewFlipper का उपयोग करके व्यूज़ के बीच एनिमेटेड ट्रांजिशन बनाने का तरीका दिखाता है, जिसमें ऑटो-फ्लिपिंग और मैनुअल नेविगेशन शामिल है।

लेआउट (activity_main.xml)

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <ViewFlipper
        android:id="@+id/viewFlipper"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_above="@+id/btnPrev"
        android:inAnimation="@android:anim/slide_in_left"
        android:outAnimation="@android:anim/slide_out_right">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/image1"
            android:contentDescription="स्लाइड 1" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="दूसरा व्यू - बटन"
            android:textSize="32sp"
            android:textStyle="bold"
            android:textColor="#FFFFFF"
            android:background="#2196F3" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:src="@drawable/image3"
            android:contentDescription="स्लाइड 3" />
    </ViewFlipper>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal"
        android:gravity="center"
        android:padding="16dp">

        <Button
            android:id="@+id/btnPrev"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="पिछला" />

        <Button
            android:id="@+id/btnNext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:text="अगला" />
    </LinearLayout>
</RelativeLayout>

कस्टम एनिमेशन (res/anim/)

slide_in_right.xml

<set xmlns:android="https://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="100%"
        android:toXDelta="0%" />
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

slide_out_left.xml

<set xmlns:android="https://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0%"
        android:toXDelta="-100%" />
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

slide_in_left.xml (डिफ़ॉल्ट के लिए)

<set xmlns:android="https://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="-100%"
        android:toXDelta="0%" />
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
</set>

slide_out_right.xml (डिफ़ॉल्ट के लिए)

<set xmlns:android="https://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0%"
        android:toXDelta="100%" />
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

MainActivity.java

import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import android.widget.ViewFlipper;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private ViewFlipper viewFlipper;

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

        viewFlipper = findViewById(R.id.viewFlipper);

        // प्रोग्रामेटिकली व्यू जोड़ें
        TextView dynamicView = new TextView(this);
        dynamicView.setText("डायनामिकली जोड़ा गया TextView");
        dynamicView.setGravity(Gravity.CENTER);
        dynamicView.setTextSize(24);
        dynamicView.setTextColor(0xFFFFFFFF);
        dynamicView.setBackgroundColor(0xFF4CAF50);
        viewFlipper.addView(dynamicView);

        // ऑटो-फ्लिपिंग सेटअप
        viewFlipper.setFlipInterval(3000); // 3 सेकंड
        viewFlipper.setAutoStart(true);
        viewFlipper.startFlipping();

        // बटन लिस्टनर्स
        findViewById(R.id.btnPrev).setOnClickListener(this::previousView);
        findViewById(R.id.btnNext).setOnClickListener(this::nextView);
    }

    public void previousView(View v) {
        viewFlipper.setInAnimation(this, R.anim.slide_in_right);
        viewFlipper.setOutAnimation(this, R.anim.slide_out_left);
        viewFlipper.showPrevious();
    }

    public void nextView(View v) {
        viewFlipper.setInAnimation(this, R.anim.slide_in_left);
        viewFlipper.setOutAnimation(this, R.anim.slide_out_right);
        viewFlipper.showNext();
    }

    @Override
    protected void onResume() {
        super.onResume();
        viewFlipper.startFlipping();
    }

    @Override
    protected void onPause() {
        super.onPause();
        viewFlipper.stopFlipping(); // बैटरी बचाएं
    }
}

ViewFlipper vs ViewPager/RecyclerView

कंपोनेंट सबसे अच्छा लिए फीचर्स
ViewFlipper सिंपल स्लाइडशो, 2-5 व्यू ऑटो-फ्लिप, सिंपल एनिमेशन, लाइटवेट
ViewPager2 स्वाइपेबल स्क्रीन्स, टैब्स स्वाइप जेस्चर, फ्रैगमेंट सपोर्ट, RecyclerView आधारित
RecyclerView + Carousel कॉम्प्लेक्स लिस्ट, इनफिनिट स्क्रॉल व्यू रीसाइक्लिंग, लेआउट मैनेजर, DiffUtil

उन्नत: टच स्वाइप सपोर्ट जोड़ना

viewFlipper.setOnTouchListener(new OnSwipeTouchListener(this) {
    @Override
    public void onSwipeLeft() { nextView(null); }
    @Override
    public void onSwipeRight() { previousView(null); }
});

// OnSwipeTouchListener एक कस्टम क्लास है जो GestureDetector का उपयोग करती है

महत्वपूर्ण मेथड्स

  • showNext() / showPrevious()
  • setDisplayedChild(index) - सीधे इंडेक्स पर जाएं
  • startFlipping() / stopFlipping()
  • setFlipInterval(millis)
  • addView(View) / removeView(View)
  • getCurrentView() / getDisplayedChild()
  1. LocalBroadcastManager का उपयोग कैसे करें? LocalBroadcastManager का उपयोग कैसे करें?

    LocalBroadcastManager - ऐप-आंतरिक इवेंट बस नोट: LocalBroadcastManager **डिप्रिकेट** है (AndroidX 1.1.0+ से)। आधुनिक ऐप्स को **LiveData/Flow**, **RxJava**, या **इवेंट बस लाइब्रेरी (greenrobot EventBus, Kotlin Channel/Flow)** का उपयोग करना चाहिए। यह लेख लीगेसी API को दस्तावेज करता है और माइग्रेशन पथ द

  1. Android में Snackbar का उपयोग कैसे करें? Android में Snackbar का उपयोग कैसे करें?

    परिचय Snackbar Material Design का एक घटक है जो स्क्रीन के निचले भाग में एक संक्षिप्त संदेश दिखाता है। यह उदाहरण Snackbar के बुनियादी उपयोग और अनुकूलन को दर्शाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.

  1. Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें? Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें?

    परिचय NavigationView मटेरियल डिज़ाइन का साइड नेविगेशन ड्रॉअर (हैमबर्गर मेनू) है। यह DrawerLayout के अंदर होता है और मेनू आइटम्स, हेडर, और नेविगेशन हैंडलिंग प्रदान करता है। यह ट्यूटोरियल Navigation Components के साथ आधुनिक सेटअप दिखाता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में Fi