টিএল; ডিআর: আমি "জিমেইল থ্রি-ফ্র্যাগমেন্ট অ্যানিমেশন" দৃশ্যের হিসাবে যা উল্লেখ করব তার একটি সম্পূর্ণ কাজের নমুনা খুঁজছি । বিশেষত, আমরা দুটি টুকরা দিয়ে এর সাথে শুরু করতে চাই:
কিছু ইউআই ইভেন্টের (উদাহরণস্বরূপ, খণ্ড বি-তে কোনও কিছুতে ট্যাপ করা), আমরা চাই:
- বাম দিকে স্ক্রিনটি স্লাইড করতে ফ্র্যাগমেন্ট এ
- টুকরা বি স্ক্রিনের বাম প্রান্তে স্লাইড করতে এবং ফ্রেগমেন্ট এ দ্বারা খালি স্থানটি সরিয়ে নিতে সঙ্কুচিত হবে
- স্ক্রিনের ডান দিক থেকে স্লাইড করতে এবং ফ্রেগমেন্ট বি দ্বারা খালি করা স্থানটি নিতে ফ্রেগমেন্ট সি
এবং একটি ব্যাক বোতাম টিপে, আমরা চাই যে ক্রিয়াকলাপগুলির সেটটি উল্টানো হোক।
এখন, আমি প্রচুর আংশিক বাস্তবায়ন দেখেছি; আমি নীচে তাদের চারটি পর্যালোচনা করব। অসম্পূর্ণ হওয়ার বাইরেও তাদের সবার সমস্যা রয়েছে।
@ রিটো মেয়ার একই জনপ্রিয় প্রশ্নের এই জনপ্রিয় উত্তরটির অবদান রেখেছেন , এটি ইঙ্গিত করে যে আপনি কোনটি setCustomAnimations()
দিয়ে ব্যবহার করবেন FragmentTransaction
। দ্বি-খণ্ডের দৃশ্যের জন্য (উদাহরণস্বরূপ, আপনি কেবল প্রাথমিকভাবে খণ্ড A এ দেখেন এবং এনিমেটেড এফেক্টস ব্যবহার করে এটি একটি নতুন টুকরা বি দিয়ে প্রতিস্থাপন করতে চান), আমি সম্পূর্ণ চুক্তিতে আছি। যাহোক:
- যেহেতু আপনি কেবলমাত্র একটি "ইন" এবং একটি "আউট" অ্যানিমেশন নির্দিষ্ট করতে পারেন, তাই ত্রি-খণ্ডের দৃশ্যের জন্য প্রয়োজনীয় সমস্ত ভিন্ন অ্যানিমেশন আপনি কীভাবে পরিচালনা করবেন তা আমি দেখতে পাচ্ছি না
<objectAnimator>
তার নমুনা কোডে পিক্সেলে হার্ড-ওয়্যার্ড অবস্থানের ব্যবহার করে এবং স্ক্রীনে মাপ নানারকম দেওয়া অকার্যকর হবে বলে মনে হচ্ছে না, এখনোsetCustomAnimations()
প্রয়োজন অ্যানিমেশন সম্পদ, জাভা এসব সংজ্ঞা সম্ভাবনা precluding- আমি যেমন লোকসানে চাইছি সবকিছু কীভাবে দিয়ে স্কেল টাই জন্য বস্তু অ্যানিমেটরবৃন্দ পছন্দ
android:layout_weight
একটিLinearLayout
শতকরা ভিত্তিতে স্থান বণ্টন জন্য - আমি অসম্পূর্ণ অংশ সি গোড়াতেই পরিচালিত হয় হিসেবে লোকসানে কোথায় (
GONE
?android:layout_weight
এর0
? 0? অন্য কিছু স্কেলে প্রাক-অ্যানিমেটেড?)
@ রোমান নুরিক উল্লেখ করেছেন যে আপনি নিজের দ্বারা সংজ্ঞায়িত সম্পত্তি সহ আপনি যে কোনও সম্পত্তি সঞ্চার করতে পারেন । এটি নিজের কাস্টম লেআউট ম্যানেজার সাবক্লাস আবিষ্কার করে ব্যয় করে শক্ত ওয়্যারযুক্ত অবস্থানগুলির সমস্যা সমাধানে সহায়তা করতে পারে। এটি কিছু সাহায্য করে, কিন্তু আমি এখনও রেটোর বাকী সমাধানগুলি দ্বারা বিস্মিত।
এর লেখক এই পেস্টবিন এন্ট্রিটির কিছু তাত্পর্যপূর্ণ সিউডোকোড দেখায়, মূলত বলেছিল যে তিনটি খণ্ড প্রাথমিকভাবে ধারকটিতে থাকবে, ফ্রেগমেন্ট সি hide()
লেনদেনের ক্রিয়াকলাপের মাধ্যমে গোপনে লুকিয়ে থাকবে। ইউআই ইভেন্টটি যখন ঘটে তখন আমরা তখন show()
সি এবং hide()
এ। যাইহোক, আমি দেখতে পাচ্ছি না যে এটি কীভাবে বি আকার পরিবর্তন করে hand এটি এও নির্ভর করে যে আপনি দৃশ্যত একই পাত্রে একাধিক টুকরো যোগ করতে পারেন, এবং দীর্ঘমেয়াদে এটি নির্ভরযোগ্য আচরণ কিনা তা আমি নিশ্চিত নই (এটি ভেঙে যাওয়া উচিত উল্লেখ করা উচিত findFragmentById()
, যদিও আমি তার সাথে বেঁচে থাকতে পারি)।
এই ব্লগ পোস্টটির লেখক ইঙ্গিত দেয় যে জিমেইল মোটেও ব্যবহার setCustomAnimations()
করছে না, বরং সরাসরি অবজেক্ট অ্যানিমেটারগুলি ব্যবহার করে ("আপনি কেবলমাত্র মূল ভিউটির বাম মার্জিন + ডান দৃশ্যের প্রস্থ পরিবর্তন করুন") ব্যবহার করেন। যাইহোক, এটি এখনও একটি দ্বি-খণ্ড সমাধান AFAICT, এবং বাস্তবায়ন আবার পিক্সেলের শক্ত তারের মাত্রা দেখানো হয়েছে।
আমি এটি এড়িয়ে চলতে থাকব, তাই আমি নিজেই এই উত্তরটি কোনও দিনই সাড়াতে পারি, তবে আমি সত্যিই আশা করছি যে কেউ এই অ্যানিমেশন দৃশ্যের জন্য তিনটি খণ্ড সমাধান সমাধান করেছেন এবং কোডটি (বা এর কোনও লিঙ্ক) পোস্ট করতে পারেন। অ্যান্ড্রয়েডে অ্যানিমেশনগুলি আমার চুলগুলি টেনে আনতে চায় এবং আপনারা যারা আমাকে দেখেছেন তারা জানেন যে এটি একটি বৃহত ফলদায়ক প্রচেষ্টা।