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


164

আমি কীভাবে FLAG_ACTIVITY_NO_ANIMATIONঅ্যান্ড্রয়েডমেনিস্ট ফাইলটিতে ইন্টেন্ট ফ্ল্যাগটি সঠিকভাবে ব্যবহার করতে পারি ? আমি মনে করি আমার সমস্যাটি তুচ্ছ, তবে এর ভাল উদাহরণ বা সমাধান আমি পাই না।

    <intent-filter>
        <data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
    </intent-filter>

তবে কমপ্লিটর দ্বারা কোনও ত্রুটির খবর দেওয়া হয়নি, তবে dataএটি সঠিক নয়। ক্রিয়াকলাপগুলির মধ্যে স্যুইচিংয়ের ক্ষেত্রে আমি কেবল অ্যানিমেশনটি অক্ষম করতে চাই। আমি getWindow().setWindowAnimations(0);বরং onCreate বা onResume ব্যবহার করতে পারি তবে পতাকা ব্যবহার করা আরও ভাল উপায়, তাই না?

আমি কোডেও ব্যবহার করতে পারি:

    Intent intent = new Intent(v.getContext(), newactivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    getContext().startActivity(intent);

তবে আমি এই পতাকাটি অ্যান্ড্রয়েড ম্যানিফেস্টে ব্যবহার করতে চাই। দ্বিতীয় ক্রিয়াকলাপ থেকে প্রথমটিতে ফিরে আসার ক্ষেত্রেও অ্যানিমেশন অক্ষম করতে।


আমি থিমটি ব্যবহার করতে উত্সাহ পেয়েছি - ক্রিয়াকলাপ বা পুরো অ্যাপ্লিকেশনটির জন্য এন্টি প্রস্থান, প্রস্থানটি সংজ্ঞায়িত করে। কেউ কি আমাকে এ সম্পর্কে আরও তথ্য দিতে পারেন?
woyaru

উত্তর:


268

আপনি একটি স্টাইল তৈরি করতে পারেন,

 <style name="noAnimTheme" parent="android:Theme">
   <item name="android:windowAnimationStyle">@null</item>
</style>

এবং এটি ম্যানিফেস্টে আপনার ক্রিয়াকলাপের জন্য থিম হিসাবে সেট করুন:

   <activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
    </activity>

আপনি কাস্টম এন্ট্রি এবং প্রস্থান অ্যানিমেশন নির্দিষ্ট করতে একটি শৈলীর সংজ্ঞা দিতে পারেন। http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation


ধন্যবাদ, এটি বিশেষত স্বচ্ছ / সংলাপযুক্ত থিমযুক্ত ক্রিয়াকলাপগুলির জন্য আলাদা টাস্কের সান্নিধ্যের সাথে রিসেন্টস থেকে বাদ দেওয়া জন্য দুর্দান্ত কাজ করে। এটি ছাড়াই অ্যানিমেশনটি একটি ডায়লগ খোলার জন্য খুব বিজোড় ফলাফল তৈরি করে দেখায়!
3c71

এটি আর ললিপপ / অ্যান্ড্রয়েড 5.0 এর জন্য কাজ করবে বলে মনে হচ্ছে না?
কেনেই

আমার কাছে অ্যান্ড্রয়েড 5 রয়েছে এবং এটি আমার পক্ষে কাজ করে। আমার অ্যাপ্লিকেশন শৈলীটি এর মতো দেখাচ্ছে: <শৈলীর নাম = "অ্যাপপ্লেম" প্যারেন্ট = "থিম.অ্যাপকম্প্যাট.লাইট.ডর্ক অ্যাকশনবার"> <আইটেমের নাম = "অ্যান্ড্রয়েড: উইন্ডোঅ্যানিমেশন স্টাইল"> @ নাল </
i

6.0 এও পুরোপুরি কাজ করে। একটি দুর্দান্ত টিপ। যেমন আমি নীচে জিজ্ঞাসা করছি, আমি আশ্চর্যবোধ করি যে * অ্যানিমেশনটি কীভাবে অক্ষম করা যায় * যখন প্রথম কোনও অ্যাপ্লিকেশন চালু করার সময় ঘটে ... উপায় আছে ?!
ফ্যাটি

5
আপনি AppCompatActivity বাড়িয়ে দিলে ক্রাশ হবে
মাইক 6679

191

যদি আপনার প্রসঙ্গটি কোনও ক্রিয়াকলাপ হয় তবে আপনি ওভাররাইডে অর্থ প্রদানের ট্রান্সজিশন বলতে পারেন :

স্টার্টঅ্যাক্টিভিটির (উদ্দিষ্ট) এর স্বাদগুলির একটির সাথে সাথেই কল করুন বা পরবর্তী সম্পাদনের জন্য একটি স্পষ্ট রূপান্তর অ্যানিমেশন নির্দিষ্ট করতে শেষ করুন।

সুতরাং, প্রোগ্রামগতভাবে:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);

এটি কি অ্যাডাবির মাধ্যমে করা সম্ভব?
অ্যান্ড্রয়েড বিকাশকারী

@ ট্যালএঞ্জেল দ্য overridePendingTransitionএপিআই স্তরে যোগ করা হয়েছিল। সুতরাং এটি "প্রতিটি" অ্যান্ড্রয়েড সংস্করণে কাজ করে না তবে আমার ধারণা আপনি 5 এর পরে উচ্চতর এপিআই স্তরের লক্ষ্যবস্তু করুন
ব্রুনো বিরি


24

আপনি যে সমস্ত ক্রিয়াকলাপ থেকে রূপান্তর করতে চান না সেগুলিতে আপনি কেবল এটি করতে পারেন:

@Override
public void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

আমি এই পদ্ধতির পছন্দ করি কারণ আপনার ক্রিয়াকলাপের শৈলীতে আপনার কোনও গোলমাল হতে হবে না।


একটি দুর্দান্ত টিপ। আমি ভাবছি যে * অ্যানিমেশনটি কীভাবে অক্ষম করতে হবে * যখন প্রথম কোনও অ্যাপ্লিকেশন চালু করার সময় ঘটে ... উপায় আছে ?!
ফ্যাটি

@ ফ্যাটি আপনার প্রবর্তনের ক্রিয়াকলাপের অন স্টার্ট () পদ্ধতিটিকে ওভাররাইড করুন এবং এতে একই কোডটি রাখুন।
জাওয়াদ আদিল

5

এটি উদাহরণের ব্যবহার বা কীভাবে ব্যবহার করবেন তার ব্যাখ্যা নয় FLAG_ACTIVITY_NO_ANIMATION, তবে Activityপ্রশ্নের শিরোনামে জিজ্ঞাসা করা স্যুইচিং অ্যানিমেশনটি কীভাবে অক্ষম করা যায় তার উত্তর দেয় :

অ্যান্ড্রয়েড, নতুন ক্রিয়াকলাপ শুরু করার সাথে 'মুছা' প্রভাবটি কীভাবে অক্ষম করবেন?


4

এখানে একটি ওয়ান-লাইনার দ্রবণ minSdkVersion 14যা আপনার মধ্যে যতটা sert োকানো উচিত তত কম জন্য কাজ করে res/styles.xml:

<item name="android:windowAnimationStyle">@null</item>

তাই ভালো:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="android:windowAnimationStyle">@null</item>
    </style>
    ...
</resources>

চিয়ার্স!


3

থিম শৈলীতে লাইনটি সূক্ষ্মভাবে কাজ করে, তবে এটি অ্যানিমেশনটিকে একটি সাদা পর্দার সাথে প্রতিস্থাপন করে। বিশেষত ধীর ফোনে - এটি সত্যিই বিরক্তিকর। সুতরাং, আপনি যদি তাত্ক্ষণিক রূপান্তর চান - আপনি এটি থিম শৈলীতে ব্যবহার করতে পারেন:

<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>

2

অ্যান্ড্রয়েড: থিম আপনার নিজস্ব স্টাইল ওভাররাইড তৈরি করুন

<style name="noAnimationStyle" parent="android:Theme">
    <item name="android:windowAnimationStyle">@null</item>
</style>

তারপরে এটি প্রকাশ্যে এটি ব্যবহার করুন:

<activity android:name=".MainActivity"
    android:theme="@style/noAnimationStyle">
</activity>

0

অভিপ্রায় শুরু করার পরে আপনি এই কোডটি ব্যবহার করতে পারেন:

Intent intent = new Intent(Activity1.this, Activity2.class);
overridePendingTransition(0, 0);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);

যদি ব্যবহার করা হয়, উদ্দেশ্য কোনও অ্যানিমেশন বা স্থানান্তরগুলি নিয়ে কাজ করবে

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