ফ্লিং অ্যানিমেশন ব্যবহার করে ভিউ সরান

রচনা পদ্ধতি চেষ্টা করুন
জেটপ্যাক কম্পোজ হল Android এর জন্য প্রস্তাবিত UI টুলকিট। কম্পোজে অ্যানিমেশন কীভাবে ব্যবহার করবেন তা শিখুন।

ফ্লিং-ভিত্তিক অ্যানিমেশন একটি ঘর্ষণ শক্তি ব্যবহার করে যা একটি বস্তুর বেগের সমানুপাতিক। একটি বস্তুর একটি সম্পত্তি অ্যানিমেট করতে এবং ধীরে ধীরে অ্যানিমেশন শেষ করতে এটি ব্যবহার করুন। এটির একটি প্রাথমিক ভরবেগ রয়েছে, যা বেশিরভাগ অঙ্গভঙ্গি বেগ থেকে প্রাপ্ত হয় এবং ধীরে ধীরে ধীর হয়ে যায়। অ্যানিমেশন শেষ হয়ে যায় যখন অ্যানিমেশনের বেগ যথেষ্ট কম হয় যে এটি ডিভাইসের স্ক্রিনে কোনো দৃশ্যমান পরিবর্তন করে না।

চিত্র 1. ফ্লিং অ্যানিমেশন

সম্পর্কিত বিষয় সম্পর্কে জানতে, নিম্নলিখিত নির্দেশিকা পড়ুন:

AndroidX লাইব্রেরি যোগ করুন

পদার্থবিদ্যা-ভিত্তিক অ্যানিমেশনগুলি ব্যবহার করতে, আপনাকে অবশ্যই আপনার প্রকল্পে AndroidX লাইব্রেরি যুক্ত করতে হবে:

  1. আপনার অ্যাপ মডিউলের জন্য build.gradle ফাইলটি খুলুন।
  2. dependencies বিভাগে AndroidX লাইব্রেরি যোগ করুন।
            dependencies {
                implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
            }
            
            dependencies {
                implementation("androidx.dynamicanimation:dynamicanimation:1.0.0")
            }
            

একটি ফ্লিং অ্যানিমেশন তৈরি করুন

FlingAnimation ক্লাস আপনাকে একটি বস্তুর জন্য একটি ফ্লিং অ্যানিমেশন তৈরি করতে দেয়। একটি ফ্লিং অ্যানিমেশন তৈরি করতে, FlingAnimation ক্লাসের একটি উদাহরণ তৈরি করুন এবং একটি বস্তু এবং বস্তুর সম্পত্তি প্রদান করুন যা আপনি অ্যানিমেট করতে চান।

val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);

বেগ সেট করুন

প্রারম্ভিক বেগ অ্যানিমেশনের শুরুতে একটি অ্যানিমেশন সম্পত্তির পরিবর্তনের গতিকে সংজ্ঞায়িত করে। ডিফল্ট প্রারম্ভিক বেগ প্রতি সেকেন্ডে শূন্য পিক্সেল সেট করা আছে। অতএব, অ্যানিমেশন অবিলম্বে শেষ না হয় তা নিশ্চিত করার জন্য আপনাকে অবশ্যই একটি স্টার্ট বেগ নির্ধারণ করতে হবে।

আপনি প্রারম্ভিক বেগ হিসাবে একটি নির্দিষ্ট মান ব্যবহার করতে পারেন, অথবা আপনি এটি একটি স্পর্শ অঙ্গভঙ্গির বেগ থেকে বন্ধ করতে পারেন। আপনি যদি একটি নির্দিষ্ট মান প্রদান করতে চান, তাহলে আপনাকে প্রতি সেকেন্ডে dp-এ মান নির্ধারণ করতে হবে, তারপর প্রতি সেকেন্ডে পিক্সেলে রূপান্তর করুন। dp প্রতি সেকেন্ডে মান সংজ্ঞায়িত করা বেগকে একটি ডিভাইসের ঘনত্ব এবং ফর্ম ফ্যাক্টর থেকে স্বাধীন হতে দেয়। প্রারম্ভিক বেগ প্রতি সেকেন্ডে পিক্সেলে রূপান্তর করার বিষয়ে আরও তথ্যের জন্য, স্প্রিং অ্যানিমেশনে প্রতি সেকেন্ডে পিক্সেল প্রতি সেকেন্ডে রূপান্তরিত dp দেখুন।

বেগ সেট করতে, setStartVelocity() পদ্ধতিতে কল করুন এবং প্রতি সেকেন্ডে পিক্সেলে বেগ পাস করুন। পদ্ধতিটি ফ্লিং অবজেক্টটি ফেরত দেয় যার উপর বেগ সেট করা হয়।

দ্রষ্টব্য: স্পর্শ অঙ্গভঙ্গির বেগ পুনরুদ্ধার এবং গণনা করতে যথাক্রমে GestureDetector.OnGestureListener এবং VelocityTracker ক্লাসগুলি ব্যবহার করুন৷

একটি অ্যানিমেশন মান পরিসীমা সেট করুন

আপনি যখন একটি নির্দিষ্ট পরিসরে সম্পত্তির মান নিয়ন্ত্রণ করতে চান তখন আপনি সর্বনিম্ন এবং সর্বাধিক অ্যানিমেশন মান সেট করতে পারেন। এই পরিসর নিয়ন্ত্রণটি বিশেষভাবে উপযোগী যখন আপনি বৈশিষ্ট্যগুলিকে অ্যানিমেট করেন যেগুলির মধ্যে একটি অন্তর্নিহিত পরিসর রয়েছে, যেমন আলফা (0 থেকে 1 পর্যন্ত)।

দ্রষ্টব্য : যখন একটি ফ্লিং অ্যানিমেশনের মান সর্বনিম্ন বা সর্বোচ্চ মান ছুঁয়ে যায়, তখন অ্যানিমেশন শেষ হয়।

সর্বনিম্ন এবং সর্বোচ্চ মান সেট করতে, যথাক্রমে setMinValue() এবং setMaxValue() পদ্ধতিতে কল করুন। উভয় পদ্ধতিই অ্যানিমেশন অবজেক্ট ফিরিয়ে দেয় যার জন্য আপনি মান সেট করেছেন।

ঘর্ষণ সেট করুন

setFriction() পদ্ধতি আপনাকে অ্যানিমেশনের ঘর্ষণ পরিবর্তন করতে দেয়। এটি একটি অ্যানিমেশনে বেগ কত দ্রুত হ্রাস পায় তা নির্ধারণ করে।

দ্রষ্টব্য : আপনি অ্যানিমেশনের শুরুতে ঘর্ষণ সেট না করলে, অ্যানিমেশনটি 1 এর একটি ডিফল্ট ঘর্ষণ মান ব্যবহার করে।

পদ্ধতিটি সেই বস্তুকে ফেরত দেয় যার অ্যানিমেশন আপনার দেওয়া ঘর্ষণ মান ব্যবহার করে।

নমুনা কোড

নীচের উদাহরণটি একটি অনুভূমিক ফ্লিংকে চিত্রিত করে। বেগ ট্র্যাকার থেকে ক্যাপচার করা বেগ হল velocityX এবং, স্ক্রোল সীমা 0 এবং maxScroll এ সেট করা হয়েছে। ঘর্ষণ 1.1 এ সেট করা হয়েছে।

FlingAnimation(view, DynamicAnimation.SCROLL_X).apply {
    setStartVelocity(-velocityX)
    setMinValue(0f)
    setMaxValue(maxScroll)
    friction = 1.1f
    start()
}
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
fling.setStartVelocity(-velocityX)
        .setMinValue(0)
        .setMaxValue(maxScroll)
        .setFriction(1.1f)
        .start();

ন্যূনতম দৃশ্যমান পরিবর্তন সেট করুন

যখন আপনি একটি কাস্টম প্রপার্টি অ্যানিমেট করেন যা পিক্সেলে সংজ্ঞায়িত করা হয় না, তখন আপনার অ্যানিমেশন মানটির ন্যূনতম পরিবর্তন সেট করা উচিত যা ব্যবহারকারীদের কাছে দৃশ্যমান। এটি অ্যানিমেশন শেষ করার জন্য একটি যুক্তিসঙ্গত থ্রেশহোল্ড নির্ধারণ করে।

DynamicAnimation.ViewProperty অ্যানিমেট করার সময় এই পদ্ধতিটি কল করার প্রয়োজন নেই কারণ ন্যূনতম দৃশ্যমান পরিবর্তনটি সম্পত্তি থেকে প্রাপ্ত। যেমন:

  • TRANSLATION_X , TRANSLATION_Y , TRANSLATION_Z , SCROLL_X , এবং SCROLL_Y মতো দর্শন বৈশিষ্ট্যগুলির জন্য ডিফল্ট ন্যূনতম দৃশ্যমান পরিবর্তন মান হল 1 পিক্সেল৷
  • যে অ্যানিমেশনগুলি ঘূর্ণন ব্যবহার করে, যেমন ROTATION , ROTATION_X , এবং ROTATION_Y , সর্বনিম্ন দৃশ্যমান পরিবর্তন হল MIN_VISIBLE_CHANGE_ROTATION_DEGREES , বা 1/10 পিক্সেল৷
  • অস্বচ্ছতা ব্যবহার করে এমন অ্যানিমেশনগুলির জন্য, ন্যূনতম দৃশ্যমান পরিবর্তন হল MIN_VISIBLE_CHANGE_ALPHA , বা 1/256৷

একটি অ্যানিমেশনের জন্য ন্যূনতম দৃশ্যমান পরিবর্তন সেট করতে, setMinimumVisibleChange() পদ্ধতিতে কল করুন এবং ন্যূনতম দৃশ্যমান ধ্রুবকগুলির একটি বা একটি মান পাস করুন যা আপনাকে একটি কাস্টম সম্পত্তির জন্য গণনা করতে হবে৷ এই মান গণনা করার বিষয়ে আরও তথ্যের জন্য, একটি ন্যূনতম দৃশ্যমান পরিবর্তন মান গণনা বিভাগটি পড়ুন।

anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE
anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);

দ্রষ্টব্য : আপনাকে একটি মান পাস করতে হবে শুধুমাত্র যখন আপনি একটি কাস্টম প্রপার্টি অ্যানিমেট করবেন যা পিক্সেলে সংজ্ঞায়িত করা হয়নি।

একটি ন্যূনতম দৃশ্যমান পরিবর্তন মান গণনা করা হচ্ছে

একটি কাস্টম সম্পত্তির জন্য ন্যূনতম দৃশ্যমান পরিবর্তন মান গণনা করতে, নিম্নলিখিত সূত্রটি ব্যবহার করুন:

ন্যূনতম দৃশ্যমান পরিবর্তন = কাস্টম সম্পত্তির মানের পরিসর / পিক্সেলে অ্যানিমেশনের পরিসর

উদাহরণস্বরূপ, আপনি যে প্রপার্টিটি অ্যানিমেট করতে চান তা 0 থেকে 100 পর্যন্ত অগ্রসর হয়। এটি একটি 200-পিক্সেল পরিবর্তনের সাথে মিলে যায়। সূত্র অনুযায়ী, ন্যূনতম দৃশ্যমান পরিবর্তন মান হল 100/200 সমান 0.5 পিক্সেল।