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

অ্যান্ড্রয়েড অ্যাপে CalendarView ব্যবহার করে ক্যালেন্ডার উইজেট তৈরির পদ্ধতি

CalendarView উইজেট ব্যবহার করে তারিখ নির্বাচন

CalendarView হল একটি বিল্ট-ইন উইজেট যা ব্যবহারকারীকে গ্রাফিক্যাল ক্যালেন্ডার থেকে তারিখ নির্বাচন করতে দেয়। এটি API 11 (Honeycomb) থেকে উপলব্ধ।

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

Android Studio-তে File → New Project থেকে প্রজেক্ট তৈরি করুন।

ধাপ ২: লেআউট XML (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:id="@+id/dateView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="150dp"
        android:layout_marginTop="20dp"
        android:text="Select Date"
        android:textColor="@android:color/black"
        android:textStyle="bold"
        android:textSize="18sp" />
    
    <CalendarView
        android:id="@+id/calender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:dateTextAppearance="@style/CalendarDateText"
        android:weekDayTextAppearance="@style/CalendarWeekDayText"
        android:selectedWeekBackgroundColor="@color/colorPrimary"
        android:focusedMonthDateColor="@android:color/holo_blue_dark"
        android:unfocusedMonthDateColor="@android:color/darker_gray"
        android:showWeekNumber="false"
        android:firstDayOfWeek="2" />
</RelativeLayout>

ধাপ ৩: MainActivity.java বাস্তবায়ন

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CalendarView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    CalendarView calendar;
    TextView dateView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        calendar = findViewById(R.id.calender);
        dateView = findViewById(R.id.dateView);
        
        // ডিফল্ট তারিখ সেট করুন (আজকের তারিখ)
        long today = System.currentTimeMillis();
        calendar.setDate(today, false, true);
        
        calendar.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
            @Override
            public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
                // মাস 0-বেসড (০=জানুয়ারি), তাই +1 করুন
                String selectedDate = dayOfMonth + "-" + (month + 1) + "-" + year;
                dateView.setText("Selected: " + selectedDate);
            }
        });
    }
}

CalendarView কাস্টমাইজেশন (styles.xml-এ যোগ করুন)

<style name="CalendarDateText" parent="android:TextAppearance.DeviceDefault.Small">
    <item name="android:textColor">#000000</item>
    <item name="android:textSize">14sp</item>
</style>

<style name="CalendarWeekDayText" parent="android:TextAppearance.DeviceDefault.Small">
    <item name="android:textColor">#FF0000</item>
    <item name="android:textStyle">bold</item>
</style>

উন্নত বৈশিষ্ট্য: তারিখ রেঞ্জ সীমাবদ্ধ করা

// ন্যূনতম এবং সর্বোচ্চ তারিখ সেট করুন
Calendar minDate = Calendar.getInstance();
minDate.add(Calendar.DAY_OF_MONTH, -30); // ৩০ দিন আগে
calendar.setMinDate(minDate.getTimeInMillis());

Calendar maxDate = Calendar.getInstance();
maxDate.add(Calendar.MONTH, 1); // ১ মাস পর
calendar.setMaxDate(maxDate.getTimeInMillis());

আধুনিক বিকল্প: MaterialDatePicker (Material Components)

Material Design লাইব্রেরির DatePicker আরও আধুনিক এবং ফ্লেক্সিবল:

// build.gradle
implementation 'com.google.android.material:material:1.11.0'

// ব্যবহার
MaterialDatePicker datePicker = MaterialDatePicker.Builder.datePicker()
    .setTitleText("Select Date")
    .setSelection(MaterialDatePicker.todayInUtcMilliseconds())
    .build();

datePicker.addOnPositiveButtonClickListener(selection -> {
    String formatted = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault())
        .format(new Date(selection));
    dateView.setText(formatted);
});

datePicker.show(getSupportFragmentManager(), "DATE_PICKER");

ধাপ ৪: 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>

অ্যাপ্লিকেশন টেস্ট করুন

অ্যাপ রান করলে একটি ক্যালেন্ডার দেখাবে। তারিখে ক্লিক করলে উপরের TextView-এ নির্বাচিত তারিখ প্রদর্শিত হবে।

  1. Android-এ AlarmManager ব্যবহার করার পদ্ধতি (Kotlin)

  2. অ্যান্ড্রয়েড অ্যাপে ক্যালেন্ডার ইভেন্ট যোগ করার পদ্ধতি

  3. উইন্ডোজ ১১ পিসিতে ক্যালেন্ডার অ্যাপ ব্যবহার করার পূর্ণ গাইড

  4. Windows 10 Calendar App ব্যবহার করার পদ্ধতি