অ্যানিমেশনের মাধ্যমে কোনও ক্রিয়াকলাপে টুকরোগুলি অদলবদল করে


94

অ্যানিমেশনের মাধ্যমে একটি ক্রিয়াকলাপে আমি দুটি টুকরোগুলি অদলবদল করতে চাই uপেজটি পেজ হ'ল স্ক্রিনের ফ্রিজেন্ট এ এবং বাম পাশ এবং পেজবি হ'ল বি খণ্ডের জন্য অর্থাৎ পর্দার ডানদিকে। এখন আমি চাই যে আমি যখন পেজএএর একটি বোতাম টিপব তখন পৃষ্ঠাগুলি কিছু সংক্রমণ অ্যানিমেশন সহ পর্দার ডানদিকে চলে যাবে side

আমি অবস্থানটি প্রতিস্থাপনের জন্য নীচের কোডটি চেষ্টা করেছি

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();

কিছু ক্লু খুঁজছি।

আগাম ধন্যবাদ.


উত্তর:


285

পুরানো অনুসন্ধান এবং আপনি সম্ভবত ইতিমধ্যে এটি সন্ধান করেছেন তবে ভবিষ্যতের রেফারেন্সের জন্য:

আপনি যখন কোডের মাধ্যমে কোনও খণ্ড প্রতিস্থাপন করবেন তখন কাস্টম অ্যানিমেশন সেট করতে আপনি যা ব্যবহার করেন তা এখানে:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.fragment_container, newFragment, "fragment");
// Start the animated transition.
ft.commit();

এখানে স্লাইড_ইন_ বাম অ্যানিমেশনের উদাহরণ দেওয়া হল:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="-100%"
   android:toXDelta="0"
   android:interpolator="@android:anim/decelerate_interpolator"
   android:duration="500"/>
</set>

মনে রাখবেন যে আপনি যদি সামঞ্জস্যের লাইব্রেরি ব্যবহার করছেন তবে এটি অ্যানিমেশন। পরিবর্তে যদি আপনি ফ্র্যাগমেন্টম্যানেজারের জন্য স্থানীয় সমর্থন সহ এসডিকে ব্যবহার করছেন এবং আপনার অ্যানিমেশনটি দেখতে এটির মতো দেখাবে:

<?xml version="1.0" encoding="utf-8"?>
<set>
  <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:propertyName="x" 
    android:valueType="floatType"
    android:valueFrom="-1280"
    android:valueTo="0" 
    android:duration="500"/>
</set>

এটি কারণ সামঞ্জস্যতা গ্রন্থাগারটি নতুন অবজেক্টঅ্যানিমেটার প্রকারকে সমর্থন করে না এবং পরিবর্তে কেবলমাত্র পুরানো অ্যানিমেশন ফ্রেমওয়ার্কটি কার্যকর করে।


92
এটি অবশ্যই সঠিক উত্তর। মনে রাখবেন অর্ডারটি গুরুত্বপূর্ণ! অ্যাড / রিপ্লেস কলগুলির আগে আপনার কাছে কাস্টম অ্যানিমেশনস () কল থাকা দরকার!
দ্য দ্যल्फিস্টমিকে

4
আপনি যদি সেরা কম্প চান তবে আপনার কোন পদ্ধতির ব্যবহার করা উচিত?
বেসিকরেল

17
এই বিভিন্ন অ্যানিমেশনগুলি ঠিক সমান নয়। আপনি ধরে নিচ্ছেন যে -1280 এর মানFrom ব্যবহার করে আপনার খণ্ডটির প্রস্থ 1280 এর সমান। প্রস্থটি আরও বেশি হলে এটি সম্পূর্ণ স্ক্রিনটি থেকে শুরু করবে না।
egfconnor

53
এর পরিবর্তে আপনি অ্যান্ড্রয়েড নেমস্পেস থেকে পূর্বনির্ধারিত অ্যানিমেশনগুলি ব্যবহার করতে পারেন: ট্রানজেকশন.সেটম কাস্টমঅ্যানিমেশনস (android.R.anim.slide_in_left, android.R.anim.slide_out_right);
জর্ডি

4
পূর্বনির্ধারিত অ্যানিমেশনগুলি একটি রানটাইমেক্সেপশন, এফডাব্লুআইডাব্লু ট্রিগার করে কারণ তারা "অনুবাদ" ট্যাগের উপর নির্ভর করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.