অ্যান্ড্রয়েডে অন্য ক্রিয়াকলাপ কল করার সময় অ্যানিমেশন কীভাবে সরবরাহ করবেন?


115

আমার দুটি ক্রিয়াকলাপ এ এবং বি রয়েছে আমি যখন ক্রিয়াকলাপ এ বি কে কল করি তখন সঙ্কুচিত অ্যানিমেশনটি রাখতে চাই এবং অ্যাক্টিভিটি বি এ কল করলে অ্যানিমেশন সর্বাধিকতর করতে চাই I এর জন্য আমার অ্যানিমেশন এক্সএমএল ফাইলের প্রয়োজন নেই।

আমরা যখন অ্যান্ড্রয়েডে অন্য কোনও ক্রিয়াকলাপ বলি তখন এটি তার ডিফল্ট অ্যানিমেশন দেয় এবং তারপরে এটি সংকোচনের অ্যানিমেশনটিকে কল করে।

আমি যা চাই তা হ'ল ডিফল্ট অ্যানিমেশনটি না ঘটে এবং আমি যে অ্যানিমেশনটি চাই তা ঘটানো উচিত।

অন্য ক্রিয়াকলাপ কল করার সময় আমরা আসলে অ্যানিমেশনটি দিতে পারি?

উত্তর:


144

কনটেক্সট.স্টার্টএটিভিটি (ইনটেন্ট, বান্ডিল) বা সম্পর্কিত পদ্ধতিগুলিতে কল করার সময় এআইপি 16 16 আপনি কোনও ক্রিয়াকলাপের বিকল্পগুলি বান্ডিল সরবরাহ করতে পারেন । এটি ActivityOptions নির্মাতার মাধ্যমে তৈরি করা হয়েছে :

Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options = 
   ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());

আপনি যদি সমর্থন লাইব্রেরি ব্যবহার করছেন তবে ক্রিয়াকলাপ বিভাগ এবং অন্যান্য ক্রিয়াকলাপ বিভাগগুলির অন্যান্য পদ্ধতিগুলি পরীক্ষা করে দেখতে ভুলবেন না ।



এপিআই 5+:

অ্যাপ্লিকেশনগুলিতে এপিআই স্তরের 5+ লক্ষ্যবস্তুতে ক্রিয়াকলাপ overridePendingTransitionপদ্ধতি রয়েছে। এটি আগত এবং বহির্গামী অ্যানিমেশনের জন্য দুটি সংস্থান আইডি লাগে। একটি আইডি 0অ্যানিমেশন অক্ষম করবে will অবিলম্বে পরে এই কলে startActivityকল।

অর্থাৎ,

startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

API 3+:

আপনি Intent.FLAG_ACTIVITY_NO_ANIMATIONআপনার অভিপ্রায় পতাকাটি দিয়ে ডিফল্ট অ্যানিমেশন (ডান দিক থেকে স্লাইড ইন) প্রতিরোধ করতে পারেন ।

অর্থাৎ,

Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);

তারপরে আপনার ক্রিয়াকলাপে আপনাকে কেবল নিজের অ্যানিমেশন নির্দিষ্ট করতে হবে।

এটি 1.5 API (স্তর 3) এর জন্যও কাজ করে।


4
আপনি যখন "নিজের অ্যানিমেশন নির্দিষ্ট করুন" বলছেন তখন আপনার অর্থ কী? তুমি এটা কিভাবে করো? ধন্যবাদ!
pqn

আমারও একই প্রশ্ন. সম্ভবত অনারিউম এবং অনপজ এনিমেশন শুরু করুন।
টিমা

পরিবর্তে অ্যানিমেটার ব্যবহার করার কোনও উপায় আছে?
অ্যান্ড্রয়েড বিকাশকারী

কলিং ফিনিস () এর পরেও আপনি এটি ব্যবহার করতে পারেন!
থায়াগোলার

নন R.anim.fade_inএখনও একটি XML ফাইল অ্যানিমেশন আমরা আছে অনুমান res\anim ?
অ্যালেক্স জলিগ

78

ক্রিয়াকলাপ শ্রেণিতে থাকা এটি অর্জনের জন্য আপনাকে অবশ্যই ওভাররাইডপেন্ডিং ট্রান্সশন পদ্ধতি ব্যবহার করতে হবে । এপিডেমোস উদাহরণের রেজ / অ্যানিম ফোল্ডারে নমুনা অ্যানিমেশনগুলি। এটি পরীক্ষা করে দেখুন। এপিডেমোস / অ্যাপ / ক্রিয়াকলাপ / অ্যানিমেশনে ডেমো পরীক্ষা করার চেয়ে বেশি ।

উদাহরণ:

@Override
public void onResume(){
    // TODO LC: preliminary support for views transitions
    this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}

1
উত্তরের জন্য ধন্যবাদ. পদ্ধতিটি ওভাররাইডপেন্ডিং ট্রান্সশিশনটি এপিআই স্তর 5 থেকে সমর্থিত এবং আমি চাই অ্যাপ্লিকেশনটি অ্যান্ড্রয়েড 1.5 থেকে সমর্থন করা হোক। এক ক্রিয়াকলাপ থেকে অন্য ক্রিয়াকলাপকে অ্যানিমেশন সরবরাহ করার অন্য কোনও উপায় আছে কি?
সানিল

5
অসাধারণ! এটি খেলতে বেশ মজাদার
কেউ কোথাও

@ সুনিলের আপনার মতো আমারও একই সীমা রয়েছে ould আপনি কি সমস্যার সমাধান করবেন? এপিআই লেভেল 3 বা 4 (5 নয়) এর সাথে অ্যানিমেশন
ডক্ট জ্যাকি

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

আমাকে যুক্ত করার দরকার super.onResume();ছিল, পেয়ে যাচ্ছিলাম
জেন বো বো


3

জেলি বিন ActivityOptions.makeCustomAnimation () পদ্ধতির সাহায্যে এর জন্য সমর্থন যোগ করে । অবশ্যই এটি যেহেতু কেবল জেলি বিনেই রয়েছে তাই এটি ব্যবহারিক উদ্দেশ্যে একেবারেই মূল্যহীন।


5
এটি আর মূল্যহীন নয় :)
গ্রেগ এনিস

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