কীভাবে আপনার দর্শনটি এর পটভূমির রঙ পায় এবং আপনি কীভাবে আপনার লক্ষ্য রঙটি পান তার উপর নির্ভর করে এটি করার বিভিন্ন উপায় রয়েছে।
প্রথম দুটি Android অ্যানিমেশন ফ্রেমওয়ার্ক ব্যবহার করে ।
একটি অবজেক্ট অ্যানিমেটার ব্যবহার করুন যদি:
- আপনার দর্শন হিসাবে এর পটভূমির রঙটি একটি হিসাবে সংজ্ঞায়িত হয়েছে
argb
দর্শনটির একটি এক্সএমএল ফাইলে মান ।
- আপনার দর্শন আগে এর রঙ সেট করে রেখেছিল
view.setBackgroundColor()
- আপনার দৃশ্যের ব্যাকগ্রাউন্ডের রঙটি একটি অঙ্কনযোগ্য হিসাবে সংজ্ঞায়িত করা হয়েছে যা স্ট্রোক বা কর্নার রেডিওগুলি যেমন কোনও অতিরিক্ত বৈশিষ্ট্য সংজ্ঞায়িত করে না ।
- আপনার দর্শনটির ব্যাকগ্রাউন্ড রঙ একটি অঙ্কনযোগ্য হিসাবে সংজ্ঞায়িত করা হয়েছে এবং আপনি স্ট্রোক বা কর্নার রেডিওগুলি যেমন কোনও অতিরিক্ত বৈশিষ্ট্য মুছে ফেলতে চান, মনে রাখবেন অতিরিক্ত বৈশিষ্ট্য অপসারণ অ্যানিমেটেড হবে না।
অবজেক্ট অ্যানিমেটার কল করে কাজ করে view.setBackgroundColor
যা সংজ্ঞায়িত অঙ্কনযোগ্যকে প্রতিস্থাপন করে যদি না এটির কোনও উদাহরণ থাকে ColorDrawable
, যা এটি খুব কমই হয়। এর অর্থ এটি হ'ল স্ট্রোক বা কর্নারের মতো আঁকতে সক্ষম কোনও অতিরিক্ত পটভূমি সম্পত্তি মুছে ফেলা হবে।
একটি মান অ্যানিমেটার ব্যবহার করুন যদি:
- আপনার দৃশ্যের ব্যাকগ্রাউন্ডের রঙটি একটি অঙ্কনযোগ্যতে সংজ্ঞায়িত করা হয়েছে যা স্ট্রোক বা কর্নার রেডিয়াসের মতো বৈশিষ্ট্যও সেট করে এবং আপনি এটিকে নতুন রঙে পরিবর্তন করতে চান যা চলার সময় সিদ্ধান্ত নেওয়া হয়।
একটি ট্রানজিশন অঙ্কনযোগ্য ব্যবহার করুন যদি:
- আপনার দৃষ্টিভঙ্গি স্থাপনের আগে সংজ্ঞাযুক্ত দুটি অঙ্কনযোগ্যের মধ্যে স্যুইচ করা উচিত।
ট্রানজিশন ড্রয়েবলগুলির সাথে আমার কিছু পারফরম্যান্স সমস্যা রয়েছে যা আমি যখন ড্রয়ারলয়আউটটি খোলার সময় চালাচ্ছি যা আমি সমাধান করতে সক্ষম হই নি, সুতরাং আপনি যদি কোনও অপ্রত্যাশিত স্টাটারিংয়ের মুখোমুখি হন তবে আপনি সম্ভবত আমার মতো একই বাগটিতে চলে যেতে পারেন।
আপনি যদি স্টেটলিস্টস ড্রইয়েবল বা একটি লেয়ারলিস্টস আঁকতে সক্ষম ব্যবহার করতে চান তবে আপনাকে মান অ্যানিম্যাটর উদাহরণটি সংশোধন করতে হবে, অন্যথায় এটি final GradientDrawable background = (GradientDrawable) view.getBackground();
লাইনে ক্রাশ হবে ।
অবজেক্ট অ্যানিমেটার :
সংজ্ঞা দেখুন:
<View
android:background="#FFFF0000"
android:layout_width="50dp"
android:layout_height="50dp"/>
এটি তৈরি করুন এবং এর ObjectAnimator
মতো ব্যবহার করুন ।
final ObjectAnimator backgroundColorAnimator = ObjectAnimator.ofObject(view,
"backgroundColor",
new ArgbEvaluator(),
0xFFFFFFFF,
0xff78c5f9);
backgroundColorAnimator.setDuration(300);
backgroundColorAnimator.start();
আপনি অ্যানিম্যাটরআইনফ্লেটার ব্যবহার করে এক্সএমএল থেকে অ্যানিমেশন সংজ্ঞাটি লোড করতে পারেন যেমন অ্যান্ড্রয়েড অবজেক্টে অ্যানিম্যাটর অ্যানিমেট ব্যাকগ্রাউন্ডের রঙ
মান অ্যানিম্যাটর :
সংজ্ঞা দেখুন:
<View
android:background="@drawable/example"
android:layout_width="50dp"
android:layout_height="50dp"/>
অঙ্কনযোগ্য সংজ্ঞা:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke
android:color="#edf0f6"
android:width="1dp"/>
<corners android:radius="3dp"/>
</shape>
এটির মতো একটি মান অ্যানিম্যাটর তৈরি এবং ব্যবহার করুন:
final ValueAnimator valueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
0xFFFFFFFF,
0xff78c5f9);
final GradientDrawable background = (GradientDrawable) view.getBackground();
currentAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(final ValueAnimator animator) {
background.setColor((Integer) animator.getAnimatedValue());
}
});
currentAnimation.setDuration(300);
currentAnimation.start();
স্থানান্তর অঙ্কনযোগ্য :
সংজ্ঞা দেখুন:
<View
android:background="@drawable/example"
android:layout_width="50dp"
android:layout_height="50dp"/>
অঙ্কনযোগ্য সংজ্ঞা:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFFFFF"/>
<stroke
android:color="#edf0f6"
android:width="1dp"/>
<corners android:radius="3dp"/>
</shape>
</item>
<item>
<shape>
<solid android:color="#78c5f9"/>
<stroke
android:color="#68aff4"
android:width="1dp"/>
<corners android:radius="3dp"/>
</shape>
</item>
</transition>
ট্রানজিশনড্রেবেবলটি এর মতো ব্যবহার করুন:
final TransitionDrawable background = (TransitionDrawable) view.getBackground();
background.startTransition(300);
আপনি .reverse()
অ্যানিমেশন উদাহরণটি কল করে অ্যানিমেশনগুলি বিপরীত করতে পারেন ।
অ্যানিমেশনগুলি করার অন্যান্য কিছু উপায় আছে তবে এই তিনটি সম্ভবত সবচেয়ে সাধারণ। আমি সাধারণত একটি ভ্যালুএনিমেটার ব্যবহার করি।