কীভাবে আমি ক্রিয়াকলাপ শেষ করতে কোনও অ্যানিমেশন যুক্ত করতে পারি ()


100

আমি যখন আমার ক্রিয়াকলাপটি তৈরি হয় এবং এটি কার্যকর হয়ে যায় তখন আমি ওভাররাইডপেন্ডিং ট্রান্সশিশনটি ব্যবহার করছি তবে আমি বিবর্ণ কাজটি দেখতে দেখতে দুর্দান্ত দেখতে পাচ্ছি, কিন্তু যখন আমি চেষ্টা করি এবং ক্রিয়াকলাপটি শেষ করতে পারি তবে এটি এখনও ডিফল্ট ডান থেকে বাম দিকে স্লাইড করে চলেছে।

আমি যখন ক্রিয়াকলাপটি নীচে শুরু করি তখন আমি প্রথমে আউট অ্যানিমেশনটি সংজ্ঞায়িত করার চেষ্টা করেছি:

Intent myIntent = new Intent(a, SkdyAlert.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    a.startActivity(myIntent);
    if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
        AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout);
    }

তারপরে আমি ক্রিয়াকলাপটি শেষ করার পরে এটি করার চেষ্টা করেছি

okBtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            finish();
            if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
                AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout);
            }
        }
    });

তবে এই পদ্ধতির কোনওটিই প্রস্থান অ্যানিমেশনের জন্য "ডান থেকে বাম" স্লাইডটিকে আটকাবে না। আমি কী ভুল করছি সে সম্পর্কে কোনও ধারণা?

উত্তর:


230

আমি কলিং সমাপ্তির ঠিক পরে ();

আমার ক্ষেত্রে, আমি ট্রানজিশন এড়াতে এটি করেছি।

finish();
Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);

অর্ডার গুরুত্বপূর্ণ :)


5
"বিশদ" দ্বারা, @ গোফায়হেড তার সংলগ্ন ক্রিয়াকলাপটির নাম দিচ্ছেন - ymmv। এই কৌশলটি আমার জন্য থিম.ডায়ালগ থেকে একটি অ্যানিমেশন প্রতিস্থাপন করার জন্য কাজ করেছে 2..x বা 4.x নয়
ডায়ালগ

9
দেখতে কেমন লাগে R.anim.nothing?
স্যান্ডেলন

@ ফিলিপ মিকারোনি ললির উত্তরটি ব্যবহার করুন, ০ মানে কোনও অ্যানিমেশন নেই।
ইয়েং

এই মত আমাকে খুব সাহায্য করেছে। এটি কীভাবে আপনার নিজস্ব অ্যানিমেশনগুলি সংজ্ঞায়িত করতে পারে তা ব্যাখ্যা করে: stackoverflow.com/questions/5151591/…
অ্যাডাম

24
আপনি finish()সমস্ত ক্ষেত্রে ট্রানজিশন এড়াতে পদ্ধতিটিকে ওভাররাইড করতে পারেন (ব্যাক বোতামটি চাপলে, নমুনা হিসাবে): @Override public void finish() { super.finish(); overridePendingTransition(0, 0); }
ইউজিনিক

31

এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে তবে কোনও ক্রিয়াকলাপ থেকে বেরিয়ে আসার সময় অ্যানিমেশন দেওয়ার সবচেয়ে কার্যকরী উপায় সম্পর্কিত ক্রিয়াকলাপের "ফিনিস ()" পদ্ধতিটি ওভাররাইড করে:

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom);
}

25

আমি কল ফিনিস () কল করার পরিবর্তে অনপজে এনিমেশনগুলি কনফিগার করতে আইসফিনিশিং () পদ্ধতিটি ব্যবহার করার পরামর্শ দেব would

@Override
protected void onPause() {
    super.onPause();
    if (isFinishing()){
        overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out);
    }

}

কেন যে ভাল?
ম্যানুয়েল


19

আমি এই ধরণের পদ্ধতির সাহায্যে এই সমস্যাটি সমাধান করেছি:

অ্যানিমেশন দিয়ে খুলতে:

 Intent newUser = new Intent(getBaseContext(), NewUserActivity.class);
    startActivity(newUser);
    overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);

অ্যানিমেশন দিয়ে বন্ধ করতে:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right);
}

12

এটি একটি থিমের মাধ্যমে করার চেষ্টা করুন। আপনি ক্রিয়াকলাপ বা পুরো অ্যাপ্লিকেশনটির জন্য প্রস্থান প্রস্থান অ্যানিমেশন নির্ধারণ করতে পারেন


হ্যাঁ! ঐটা এটা ছিল. ভাল কিন্ডা। আমি ইতিমধ্যে একটি থিম প্রয়োগ করেছি, এবং থিমটির একটি অ্যানিমেশন সংজ্ঞায়িত ছিল, সুতরাং আমি কেন কাজ করতে নিজের অ্যানিমেশনটি পাব না তা স্থির করে। অন্তর্দৃষ্টি জন্য একটি টন ধন্যবাদ!
বি-রাইস

4
থিমগুলির মাধ্যমে কোন ট্রানজিশন সরবরাহ করা হবে সেদিকে নজর দেওয়ার জন্য কী আমাকে ইঙ্গিত দিতে পারেন? আমি সমস্ত সাইটে কাস্টম ট্রানজিশন সেট করতে চাই তবে কীভাবে তা আমি জানি না।
লাকীমালাকা

@ জাপ্লনোলিকাকে অনুরূপ প্রশ্নের জন্য আমি যে উত্তরটি দিয়েছিলাম তা আরও কিছুটা ছড়িয়ে যায়। stackoverflow.com/questions/4940574/...
নাথন Schwermann

6

@ শ্যুইজের উত্তর অনুসরণ করে, অন্তর্নির্মিত ডায়ালগ থিমের জন্য এখানে একটি অ্যানিমেশন ওভাররাইড দেওয়া হয়েছে, যেখানে আমি স্থানীয় স্লাইড_আপ এবং স্লাইড_ ডাউন অ্যানিমেশনগুলি সংজ্ঞায়িত করেছি। আমার ক্রিয়াকলাপটি এই রূপান্তরগুলি ইন এবং আউট করার জন্য থিমটি MyDialog নির্দিষ্ট করে।

<style name="Animation.MyDialog" parent="android:Animation.Dialog">
    <item name="android:windowEnterAnimation">@anim/slide_up</item>
    <item name="android:windowExitAnimation">@anim/slide_down</item>
</style>

<style name="Theme.MyDialog" parent="android:Theme.Dialog">
    <item name="android:windowAnimationStyle">@style/Animation.MyDialog</item>
</style>


5

আপনার সন্তানের ক্রিয়াকলাপ শুরু করতে এবং আপনার পিতামাতার ক্রিয়াকলাপের ক্রিয়াকলাপের পুনঃসংশোধন () এ স্টার্টঅ্যাক্টিভিটিফরালসাল্ট ব্যবহার করুন:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==REQUEST_YOUR_ACTIVITY) {
        overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim);
    }
    super.onActivityResult(requestCode, resultCode, arg2);
}

এটি ব্যাক প্রেসে (ফিজিকাল বোতাম) কাজ করে। এটি "আপ" তীর দিয়েও কাজ করার জন্য, এই উত্তরটি দেখুন: https://stackoverflow.com ক্লিক করা / 20161352 # 20161352
লেনো

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