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

কোটলিন ব্যবহার করে অ্যান্ড্রয়েড ভিউর রানটাইম সাইজ (উইডথ/হাইট) জানার পদ্ধতি

এই উদাহরণটি দেখায় কিভাবে কোটলিন এবং ViewTreeObserver.OnGlobalLayoutListener ব্যবহার করে অ্যান্ড্রয়েড ভিউর আসল উইডথ এবং হাইট রানটাইমে জানা যায়। onCreate-এ ভিউর সাইজ ০ থাকে, তাই এই লিসেনার ব্যবহার করা হয়।

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

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

দ্বিতীয় ধাপ: লেআউট XML ডিজাইন করুন

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:orientation="vertical"
    android:padding="8dp"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher_foreground"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/imageView"
        android:layout_centerInParent="true"
        android:layout_marginTop="20sp"
        android:textColor="@android:color/background_dark"
        android:textSize="16sp"
        android:textStyle="bold" />

</RelativeLayout>

তৃতীয় ধাপ: ড্রয়েবলে ইমেজ যোগ করুন

res/drawable ফোল্ডারে যেকোনো ইমেজ (image.png/jpg) কপি করুন বা ডিফল্ট ic_launcher_foreground ব্যবহার করুন।

চতুর্থ ধাপ: MainActivity.kt তে ViewTreeObserver ব্যবহার করুন

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

import android.os.Bundle
import android.view.View
import android.view.ViewTreeObserver.OnGlobalLayoutListener
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        imageView = findViewById(R.id.imageView)

        // গ্লোবাল লেআউট লিসেনার যোগ করুন
        imageView.viewTreeObserver.addOnGlobalLayoutListener(GetViewSize())
    }

    private inner class GetViewSize : OnGlobalLayoutListener {
        override fun onGlobalLayout() {
            // লিসেনার রিমুভ করুন (বারবার কল না হয় সেজন্য)
            imageView.viewTreeObserver.removeOnGlobalLayoutListener(this)

            val view = findViewById<View>(R.id.imageView)
            val width = view.width
            val height = view.height

            val textView = findViewById<TextView>(R.id.textView)
            textView.text = String.format("উইডথ: %d px, হাইট: %d px", width, height)
        }
    }
}

পঞ্চম ধাপ: ম্যানিফেস্ট ফাইল

androidManifest.xml ফাইলটি সাধারণ থাকবে।

গুরুত্বপূর্ণ নোট

  • OnGlobalLayoutListener: লেআউট পাস হলে একবার কল হয়। অবশ্যই রিমুভ করুন, না হলে বারবার কল হবে।
  • API 16+: removeOnGlobalLayoutListener() ব্যবহার করুন। API 16-এর নিচে removeGlobalOnLayoutListener() (ডিপ্রিকেটেড)।
  • বিকল্প পদ্ধতি:
    • view.doOnLayout { ... } (KTX এক্সটেনশন, androidx.core:core-ktx)
    • view.addOnLayoutChangedListener { ... } (API 11+)
    • view.post { ... } - মেইন থ্রেডের শেষে রান করে, তখনও সাইজ পাওয়া যায়।
  • ConstraintLayout ব্যবহার করলে OnGlobalLayoutListener সবচেয়ে নির্ভরযোগ্য।

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

অ্যান্ড্রয়েড ডিভাইস সংযুক্ত করে Run করুন। অ্যাপ লোড হওয়ার সাথে সাথে ImageView-এর আসল উইডথ এবং হাইট পিক্সেলে TextView-এ দেখাবে।

  1. অ্যান্ড্রয়েডে ভিউর ডাইমেনশন (উচ্চতা/প্রস্থ) প্রোগ্রাম্যাটিক্যালি পাওয়া

  2. Android-এ রানটাইমে View-এর আকার নির্ণয় করার পদ্ধতি

  3. Kotlin ব্যবহার করে Android-এ রানটাইমে TextView স্টাইল পরিবর্তন করা

  4. অ্যান্ড্রয়েড এমুলেটরের IP ঠিকানা কোটলিন ব্যবহার করে পাওয়ার উপায়