TransitionDrawable দিয়ে রঙ পরিবর্তন এনিমেশন
এই উদাহরণে TransitionDrawable ব্যবহার করে একটি View-এর ব্যাকগ্রাউন্ড কালার মượtভাবে পরিবর্তন করার কোড দেওয়া হলো।
ধাপ ১: প্রজেক্ট তৈরি
Android Studio-তে নতুন প্রজেক্ট তৈরি করুন।
ধাপ ২: লেআউট (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:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/textView"
android:layout_centerInParent="true"
android:layout_marginBottom="15dp"
android:text="Animate Background Color" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Changing Background color of this view."
android:textSize="36sp"
android:textStyle="bold" />
</RelativeLayout>
ধাপ ৩: MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
textView = findViewById(R.id.textView);
button.setOnClickListener(v -> {
// রঙের অ্যারে তৈরি করুন
ColorDrawable[] colorDrawables = {
new ColorDrawable(Color.RED),
new ColorDrawable(Color.BLUE),
new ColorDrawable(Color.GREEN)
};
// TransitionDrawable তৈরি করুন
TransitionDrawable transitionDrawable = new TransitionDrawable(colorDrawables);
// ব্যাকগ্রাউন্ড সেট করুন
textView.setBackground(transitionDrawable);
// ২ সেকেন্ডে ট্রানজিশন শুরু করুন
transitionDrawable.startTransition(2000);
});
}
}
ধাপ ৪: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.coloranimation">
<application ...>
<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>
অতিরিক্ত এনিমেশন পদ্ধতি (আধুনিক)
ObjectAnimator ব্যবহার (API 11+)
ObjectAnimator animator = ObjectAnimator.ofObject(
textView,
"backgroundColor",
new ArgbEvaluator(),
Color.RED, Color.BLUE, Color.GREEN
);
animator.setDuration(2000);
animator.start();
ValueAnimator + setBackgroundColor (সহজ)
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.BLUE);
colorAnimation.setDuration(2000);
colorAnimation.addUpdateListener(animator ->
textView.setBackgroundColor((int) animator.getAnimatedValue())
);
colorAnimation.start();
XML-এ ডিফাইন করা (res/drawable/color_transition.xml)
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="https://schemas.android.com/apk/res/android">
<item android:drawable="@color/red" />
<item android:drawable="@color/blue" />
<item android:drawable="@color/green" />
</transition>
Java-এ: TransitionDrawable td = (TransitionDrawable) getResources().getDrawable(R.drawable.color_transition);
পারফরম্যান্স টিপস
- জটিল লেআউটে ব্যাকগ্রাউন্ড এনিমেশন ল্যাগ করতে পারে -
setLayerType(LAYER_TYPE_HARDWARE, null)ব্যবহার করুন - রঙের সংখ্যা কম রাখুন (২-৩টি ভালো)
- দূরত্ব বেশি হলে duración বাড়ান (৩০০০-৫০০০ ms)