কম্পিউটার টিউটোরিয়াল

Android-এ ScrollView-এর শেষে পৌঁছানোর ইভেন্ট ধরার পদ্ধতি


ScrollView স্ক্রোল পজিশন নিরীক্ষণ করার উদাহরণ

এই উদাহরণটি দেখায় কিভাবে `ViewTreeObserver.OnScrollChangedListener` ব্যবহার করে ScrollView-এর শীর্ষ ও তলে পৌঁছানোর ইভেন্ট ধরা যায়।

ধাপ ১: নতুন প্রজেক্ট তৈরি করুন

Android Studio-তে File → New Project এ যান এবং প্রয়োজনীয় বিবরণ পূরণ করে একটি নতুন প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট XML-এ ScrollView ও WebView যোগ করুন

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

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </WebView>

    </ScrollView>
</RelativeLayout>

ধাপ ৩: MainActivity.java-এ স্ক্রোল লিস্টেনার লজিক লিখুন

src/MainActivity.java ফাইলে নিচের কোডটি যোগ করুন:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.webkit.WebView;
import android.widget.ScrollView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnTouchListener,
        ViewTreeObserver.OnScrollChangedListener {

    ScrollView scrollView;
    WebView webView;

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

        scrollView = findViewById(R.id.scrollView);
        webView = findViewById(R.id.webView);

        scrollView.setOnTouchListener(this);
        scrollView.getViewTreeObserver().addOnScrollChangedListener(this);

        // লম্বা HTML কন্টেন্ট লোড করুন strings.xml থেকে
        webView.loadData(getResources().getString(R.string.sample_data), "text/html", null);
    }

    public void onScrollChanged() {
        View view = scrollView.getChildAt(scrollView.getChildCount() - 1);
        int topDetector = scrollView.getScrollY();
        int bottomDetector = view.getBottom() - (scrollView.getHeight() + scrollView.getScrollY());

        if (bottomDetector == 0) {
            Toast.makeText(getBaseContext(), "ScrollView-এর নিচে পৌঁছেছে", Toast.LENGTH_SHORT).show();
        }
        if (topDetector <= 0) {
            Toast.makeText(getBaseContext(), "ScrollView-এর শীর্ষে পৌঁছেছে", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }
}

ধাপ ৪: strings.xml-এ লম্বা HTML কন্টেন্ট যোগ করুন

res/values/strings.xml ফাইলে নিচের কোডটি যোগ করুন:

<resources>
    <string name="app_name">Sample</string>
    <string name="sample_data"><![CDATA[
<html>
<style>
    p.small { line-height: 1.5; font-size: 12px; }
</style>
<body><p align="justify" class="small">
    চুপা চাপস ক্যারট কেক পেষ্ট্রি কাপকেক কারামেলস شوগার প্লাম চকলেট কাপকেক টুটি রোল।
    কাপকেক চকলেট ডোনাট কারামেলস সেসেম স্ন্যাপস ব্রাউনি কেক হালভা।
    সেসেম স্ন্যাপস সেসেম স্ন্যাপস গামিজ ক্যান্ডি ক্যারট কেক।
    ফ্রুটকেক বনবন লিকোরিস টপিং বিস্কিট ক্যান্ডি কেন ফ্রুটকেক মার্জিপান কেক।
    টার্ট টুটি রোল টার্ট গামি বেয়ার অ্যাপেল পাই ডানিশ পাউডার পেষ্ট্রি গামিজ।
    টিরামিসু সেসেম স্ন্যাপস আইসিং পuding। মার্জিপান সুইট রোল কুকি মার্শম্যালো।
    ... (আরও লম্বা কন্টেন্ট যোগ করুন যাতে স্ক্রোল হয়)
</p></body></html>
    ]]></string>
</resources>

ধাপ ৫: AndroidManifest.xml কনফিগার করুন

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>

অ্যাপ্লিকেশন চালানোর পদ্ধতি

আপনার Android ডিভাইস কম্পিউটারের সাথে সংযুক্ত করুন। Android Studio-তে প্রজেক্টের activity ফাইল খুলে টুলবারের Run আইকনে ক্লিক করুন। আপনার মোবাইল ডিভাইস সিলেক্ট করুন এবং স্ক্রোল করলে শীর্ষ ও তলে পৌঁছানোর টোস্ট দেখাবে।

Android-এ ScrollView-এর শেষে পৌঁছানোর ইভেন্ট ধরার পদ্ধতি

  1. অ্যান্ড্রয়েডে ইউজার এজেন্ট টাইপ বা রিংগার মোড ডিটেক্ট করা

  2. অ্যান্ড্রয়েডে ডিভাইস ফোন নাকি ট্যাবলেট সেটা ডিটেক্ট করা

  3. অ্যান্ড্রয়েডে ScrollView প্রোগ্রাম্যাটিক্যালি ডিজেবল করার পদ্ধতি

  4. Android-এ ৫ সেকেন্ড ব্যবহারকারীর নিষ্ক্রিয়তা শনাক্ত করা