অ্যান্ড্রয়েড - খণ্ডের লেনদেনের উপর কাস্টম অ্যানিমেশন চলছে না


83

আমি সমর্থন প্যাকেজ ভি 4 সহ গুগল এপিআই 8 (অ্যান্ড্রয়েড 2.2) ব্যবহার করছি।

এটি কোনও ত্রুটি বা অ্যানিমেশন দেয় না।

লেনদেন:

FragmentTransaction transaction = manager.beginTransaction();       
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();

অ্যানিমেশন:

slide_in_left.xml

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

স্লাইড_আউট_রাইট.এক্সএমএল

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

এখানে কি ঘটছে তা কি কেউ জানেন?


4
মধুচক্র (এপিআই 11, অ্যান্ড্রয়েড 3.0) অবধি খণ্ডগুলি প্রবর্তিত হয়নি। সমস্যা হতে পারে, তবে আমি ভেবেছিলাম গ্রহনটি আপনাকে বলবে।
স্টিভ ব্ল্যাকওয়েল

6
এজন্য আমি সমর্থন প্যাকেজটি ব্যবহার করছি।
অ্যাডিয়াস

উত্তর:


257

অ্যানিমেশনটি সেট করার আগে ম্যানেজার আমার লেনদেনটি স্ট্যাক করে যাচ্ছিল, সুতরাং এটি অ্যানিমেশন ছাড়াই লেনদেনকে স্ট্যাক করে (দুঃখজনক হলেও সত্য), এবং এটি যদি আমি পরে লেনদেন করি তবেও ঘটে setCustomAnimations()

সমাধানটি হ'ল প্রথমে অ্যানিমেশনগুলি সেট করা:

FragmentTransaction transaction = manager.beginTransaction();       
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.content, myFragment);
transaction.commit();

সুতরাং আপনাকে স্ব-প্রত্যাবর্তিত অবজেক্ট ট্রিক এড়িয়ে স্টেটমেন্টটি বিভক্ত করতে হবে
শেরপ্যা

4
transaction.something().somethingelse().replace().commit(), অনেকগুলি অ্যান্ড্রয়েড পদ্ধতি ফিরে আসে thisযাতে আপনি পরিবর্তনশীলটি পুনরায় টাইপ করা এড়াতে পারেন তবে কোনওভাবে এখানে একটি পার্শ্ব প্রতিক্রিয়া প্রকাশিত হয় এবং setCustomAnimations()আলাদাভাবে ডাকা উচিত
শেরপ্যা

46
কেবলমাত্র লক্ষণীয়, "স্ব-প্রত্যাবর্তিত অবজেক্ট ট্রিক" কে "মেথড চেইনিং" বলা হয়
এগার

উপরের কলটি শৃঙ্খলাবদ্ধ করার পদ্ধতিটি অবশ্যই কাজ করে। এটি কেবলমাত্র আমার নিজের প্রকল্পে পরীক্ষিত।
মাওরকফিপল্পস

অতিরিক্ত জন্য, পিছনের স্ট্যাক থেকে পপ যখন টুকরা সঞ্চারিত করতে, transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_in_left, R.anim.slide_out_right);পরিবর্তে ব্যবহার করুন।
জাস্টিন

24

উপরে প্রস্তাবিত হিসাবে, পৃথক বিবৃতি অবশ্যই কাজ করবে। তবে এখানে কৌশলটি হ'ল setCustomAnimationলেনদেনের ধরণ স্থাপন করার আগে। add, replaceইত্যাদি ইত্যাদি না। সুতরাং, একই যুক্তি প্রয়োগ, method chainingএছাড়াও কাজ করে। যেমন

getSupportFragmentManager()
        .beginTransaction()
        .setCustomAnimations(R.anim.a_slide_up,
                             R.anim.a_slide_down,
                             R.anim.a_slide_up,
                             R.anim.a_slide_down)
        .add(R.id.root_layout, 
             MyFrag.newInstance())
        .addToBackStack("MyFrag")
        .commit();

এটি এখানে রাখা, যাতে যে কেউ পছন্দ করে method chainingসেটিকে সহায়ক মনে হয়। চিয়ার্স!


4
আপনি পদ্ধতিতে শৃঙ্খলার জন্য 'ডট' অপারেটরটি যেভাবে ব্যবহার করছেন তাতে আমি হালকাভাবে বিরক্ত হয়েছি।
শৈশব

4
@ শৈশবকে সম্মত করেছেন, এই উত্তরটি লিখেছেন দু'বছর আগে, এটি আপডেট করে .. ধন্যবাদ!
হরিস্বেক

7

এটি সবচেয়ে জনপ্রিয় প্রশ্ন হিসাবে এখানে রেখে দেওয়া Lea অ্যানিমেটিং না করে টুকরো টাকার লেনদেনের ক্ষেত্রে আমার একই সমস্যা ছিল। অভিযুক্ত ব্যক্তি অ্যাট্রিবিউট চাপ ছিল android:animateLayoutChangesসেট trueধারণকারী লেআউট।

আমি আশা করি এটি সমাধানের সন্ধানে কাউকে কিছুটা সময় সাশ্রয় করতে সহায়তা করে কারণ বিভিন্ন ফাইলে নেস্ট লেআউট থাকার সময় লক্ষ্য করা শক্ত।


অ্যানিমেশন এখন কাজ করছে তবে নতুন সমস্যা- এটি অ্যানিমেশন আচরণের পরিবর্তিত হয়েছে। এটি অনুভূমিকভাবে স্লাইডিংয়ের আগে (যেমন প্রত্যাশিত)। এখন কোণ থেকে প্রসারিত
শারদ কালে

0

আরও একটি কারণ অহেতুক fragmentTransaction.show()কমিট করার আগে স্থাপন করা যেতে পারে । এটি কিছু অ্যান্ড্রয়েড এপিআই সংস্করণগুলিতে পপ স্থানান্তরগুলি না দেখায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.