অ্যান্ড্রয়েড বাটনে রাউন্ডেড কর্নার (Round Corners) যোগ করা
সтан্ডার্ড বাটনের চারপাশের কোণ গোড়া করার জন্য ড্রയেবল রিসোর্স (Drawable Resource) ব্যবহার করা সবচেয়ে সহজ এবং কার্যকর পদ্ধতি। এই টিউটোরিয়ালে আমরা একটি কাস্টম শেপ ড্রয়েবল তৈরি করে বাটনের কর্নারগুলো রাউন্ড করব এবং বিভিন্ন স্টেট (প্রেসড, ফোকাসড, নর্মাল) এর জন্য আলাদা রঙ দেব।
প্রয়োজনীয় ধাপসমূহ
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
Android Studio-তে File → New Project এ যান এবং একটি Empty Activity প্রজেক্ট তৈরি করুন।
ধাপ ২: মেইন লেআউট (activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textColor="#ffffff"
android:background="@drawable/mybutton"
android:text="বাটন"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
ধাপ ৩: MainActivity.java
package com.app.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
ধাপ ৪: কাস্টম ড্রয়েবল তৈরি করুন (res/drawable/mybutton.xml)
এটি সবচেয়ে গুরুত্বপূর্ণ ধাপ। res/drawable/ ফোল্ডারে mybutton.xml নামে একটি ফাইল তৈরি করুন:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="https://schemas.android.com/apk/res/android">
<!-- প্রেসড স্টেট (দবাও থাকা অবস্থা) -->
<item android:state_pressed="true">
<shape android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#5e7974" />
<gradient
android:angle="-90"
android:startColor="#345953"
android:endColor="#689a92" />
</shape>
</item>
<!-- ফোকাসড স্টেট -->
<item android:state_focused="true">
<shape android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#5e7974" />
<solid android:color="#58857e" />
</shape>
</item>
<!-- ডিফল্ট/নর্মাল স্টেট -->
<item>
<shape android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="1dp" android:color="#5e7974" />
<gradient
android:angle="-90"
android:startColor="#8dbab3"
android:endColor="#58857e" />
</shape>
</item>
</selector>
মূল উপাদানগুলো ব্যাখ্যা:
- <selector>: বিভিন্ন স্টেটের জন্য আলাদা ড্রয়েবল সংজ্ঞায়িত করে
- <shape android:shape="rectangle">: আকার আয়তাকার
- <corners android:radius="8dp">: কোণাবৃত্তার ব্যাসার্ধ (এখানে 8dp)
- <stroke>: বর্ডার/किनারা
- <gradient>: গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড
- <solid>: একক রঙের ব্যাকগ্রাউন্ড
ধাপ ৫: ম্যানিফেস্ট ফাইল
সাধারণ ম্যানিফেস্ট কনফিগারেশন ব্যবহার করুন।
অ্যাপ্লিকেশন রান করুন
প্রজেক্টটি বিল্ড করে ডিভাইসে ইনস্টল করুন। বাটনটি ক্লিক করলে এর রঙ পরিবর্তন হবে এবং কোণগুলো সুন্দরভাবে গোলাকার দেখাবে।
প্রো টিপস
- API 21+ (Lollipop) এর জন্য
android:backgroundTintএবংandroid:stateListAnimatorব্যবহার করে আরও উন্নত ইফেক্ট যোগ করা যায় - MaterialButton ব্যবহার করলে
app:cornerRadiusঅ্যাট্রিবিউট দিয়ে সরাসরি কর্নার রেডিয়াস সেট করা যায় - অনিমেশন যোগ করতে
android:stateListAnimatorবা RippleDrawable ব্যবহার করুন