উদাহরণের আগে জানতে হবে গ্রেডিয়েন্ট কালার কী। উইকিপিডিয়া অনুযায়ী, কম্পিউটার গ্রাফিক্সে একটি কালার গ্রেডিয়েন্ট (কলার র্যাম্প বা কালার প্রগ্রেশন) পজিশন-ডিপেন্ডেন্ট কালারের একটি রেঞ্জ নির্দেশ করে, সাধারণত একটি রিজন ফিল করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, অনেক উইন্ডো ম্যানেজার স্ক্রিন ব্যাকগ্রাউন্ডকে গ্রেডিয়েন্ট হিসেবে স্পেসিফাই করার অনুমতি দেয়।
এই উদাহরণটি অ্যান্ড্রয়েডে অ্যানিমেটেড গ্রেডিয়েন্ট ব্যাকগ্রাউন্ড তৈরির পদ্ধতি দেখায়।
ধাপ ১: নতুন প্রজেক্ট তৈরি করুন
অ্যান্ড্রয়েড স্টুডিওতে File → New Project এ যান এবং প্রজেক্ট তৈরির জন্য প্রয়োজনীয় বিবরণ পূরণ করুন।
ধাপ ২: activity_main.xml-এ লেআউট যোগ করুন
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:id="@+id/constraintLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gradient_animation"
tools:context=".MainActivity">
<TextView
android:layout_width="368dp"
android:layout_height="520dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/app_name"
android:textAlignment="center"
android:textColor="@android:color/background_light"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@string/app_name"/>
</android.support.constraint.ConstraintLayout>
ব্যাকগ্রাউন্ড হিসেবে @drawable/gradient_animation সেট করা হয়েছে। এখন drawable ফোল্ডারে gradient_animation.xml তৈরি করুন এবং নিচের কোড যোগ করুন:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="https://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/drawable_purple_gradient"
android:duration="3000" />
<item
android:drawable="@drawable/drawable_amber_gradient"
android:duration="3000" />
<item
android:drawable="@drawable/drawable_green_gradient"
android:duration="3000" />
<item
android:drawable="@drawable/drawable_red_gradient"
android:duration="3000" />
</animation-list>
এনিমেশন-লিস্টে ৪টি চাইল্ড ড্রয়েবল এবং প্রতিটি জন্য ৩০০০ মিলিসেকেন্ড (৩ সেকেন্ড) ডিউরেশন দেওয়া হয়েছে। টাইমআউট হলে ব্যাকগ্রাউন্ড চেঞ্জ হবে।
এখন drawable_purple_gradient.xml ফাইলটি drawable ফোল্ডারে তৈরি করুন:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="#D500F9"
android:startColor="#4A148C" />
</shape>
একইভাবে নিচের ফাইলগুলো তৈরি করুন:
drawable_amber_gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
<gradient
android:angle="135"
android:endColor="#FFC400"
android:startColor="#FF6F00" />
</shape>
drawable_green_gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
<gradient
android:angle="0"
android:endColor="#00E676"
android:startColor="#1B5E20" />
</shape>
drawable_red_gradient.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="https://schemas.android.com/apk/res/android">
<gradient
android:angle="45"
android:endColor="#FF1744"
android:startColor="#B71C1C" />
</shape>
ধাপ ৩: MainActivity.java-এ কোড যোগ করুন
package com.example.andy.myapplication;
import android.graphics.drawable.AnimationDrawable;
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private ConstraintLayout constraintLayout;
private AnimationDrawable animationDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
constraintLayout = (ConstraintLayout) findViewById(R.id.constraintLayout);
animationDrawable = (AnimationDrawable) constraintLayout.getBackground();
animationDrawable.setEnterFadeDuration(3000);
animationDrawable.setExitFadeDuration(2000);
}
@Override
protected void onResume() {
super.onResume();
if (animationDrawable != null && !animationDrawable.isRunning()) {
animationDrawable.start();
}
}
@Override
protected void onPause() {
super.onPause();
if (animationDrawable != null && animationDrawable.isRunning()) {
animationDrawable.stop();
}
}
}
আউটপুট
প্রতি ৩ সেকেন্ড পরপর ব্যাকগ্রাউন্ড কালার পরিবর্তন হবে:
