উত্তর:
আপনি এটি দিয়ে এটি করতে পারেন Activity.overridePendingTransition()
। আপনি একটি এক্সএমএল রিসোর্স ফাইলে সাধারণ স্থানান্তর অ্যানিমেশনগুলি সংজ্ঞায়িত করতে পারেন।
onCreate
।
দুটি ক্রিয়াকলাপের মধ্যে একটি সুন্দর মসৃণ বিবর্ণ করার কোডটি এখানে ..
নামক কোনো ফাইল তৈরি করুন fadein.xml
মধ্যেres/anim
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />
নামক কোনো ফাইল তৈরি করুন fadeout.xml
মধ্যেres/anim
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2000" />
আপনি ক্রিয়াকলাপ এ থেকে ক্রিয়াকলাপ বি থেকে বিবর্ণ করতে চান , নিম্নোক্ত করা onCreate()
জন্য পদ্ধতি ভ্রমণ বি । setContentView()
আমার জন্য কাজ করার আগে ।
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
যদি বিবর্ণগুলি আপনার জন্য খুব ধীর android:duration
হয় তবে উপরের এক্সএমএল ফাইলগুলিকে আরও ছোট কিছুতে পরিবর্তন করুন ।
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
এই ফাইলগুলি দেখার ফলে আপনার কাস্টম অ্যানিমেশনগুলিকে কীভাবে উন্নত করা যায় সে সম্পর্কে ইঙ্গিত দেওয়া যেতে পারে (যেমন বিবর্ণ হওয়ার চেয়ে দীর্ঘস্থায়ীভাবে বিবর্ণ করা)।
fadein
এবং fadeout
করতে fade_in
এবং fade_out
। ড্যান জে এর পোস্ট থেকে
overridePendingTransition()
পরে finish()
এবং / অথবা আপনার ঠিক তখনই কল করা উচিত startActivity()
। নতুন ক্রিয়াকলাপটি শুরু করার পরে ডেকে এনে আমি এইভাবে একটি সুন্দর বিবর্ণ পেতে সক্ষম হয়েছি।
এটি করার একটি এমনকি সহজ উপায় হ'ল:
<style name="WindowAnimationTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>
<style name="AppBaseTheme" parent="Theme.Material.Light.DarkActionBar"> <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item> </style>
এটাই :)
হ্যাঁ. আপনার ক্রিয়াকলাপের জন্য আপনি কী ধরণের রূপান্তর করতে চান তা আপনি ওএসকে বলতে পারেন।
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setWindowAnimations(ANIMATION);
...
}
যেখানে এনিমেশন হল একটি পূর্ণসংখ্যা যেখানে ওএস-এ অন্তর্নির্মিত অ্যানিমেশনটির উল্লেখ করে।
res> anim> fadein.xML তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
res> anim> fadeout.xML তৈরি করুন
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
পুনরায়> মান> শৈলী.এক্সএমএল এ
<style name="Fade">
<item name="android:windowEnterAnimation">@anim/fadein</item>
<item name="android:windowExitAnimation">@anim/fadeout</item>
</style>
ক্রিয়েট () উপর ক্রিয়াকলাপে
getWindow().getAttributes().windowAnimations = R.style.Fade;
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
ডিফল্ট অ্যানিমেশনগুলির তালিকার জন্য দেখুন: http://developer.android.com/references/android/R.anim.html
প্রকৃতপক্ষে fade_in
এবং fade_out
এপিআই স্তরের 1 এবং উপরে রয়েছে।
আমি আমার ডিফল্ট ক্রিয়াকলাপ অ্যানিমেশনটি ওভাররাইট করি। আমি এপিআই 15 এ এটি পরীক্ষা করে দেখছি যে এটি সহজে কাজ করে। আমি যে সমাধানটি ব্যবহার করি তা এখানে:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
</style>
<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
<item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
<item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>
রেজ ফোল্ডারের অধীনে আনিম ফোল্ডার তৈরি করুন এবং তারপরে এই চারটি অ্যানিমেশন ফাইল তৈরি করুন:
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
আপনি আমার নমুনা প্রকল্পটি ডাউনলোড করতে পারেন ।
এখানেই শেষ... :)
দুটি ক্রিয়াকলাপের মধ্যে সুন্দর মসৃণ করার কোড এখানে।
বাম থেকে ডানে মসৃণ প্রভাব
স্লাইড_আইন_রাইট.এক্সএমএল এবং স্লাইড_আউট_রাইট.এক্সএমএল নামে একটি ফাইল তৈরি করুন
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="100%" android:toXDelta="0%" />
<alpha android:duration="5000" android:fromAlpha="0.0" android:toAlpha="1.0" />
</set>
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate android:duration="5000" android:fromXDelta="0%" android:toXDelta="-100%"/>
<alpha android:duration="5000" android:fromAlpha="1.0" android:toAlpha="0.0" />
</set>
ডান থেকে বাম মসৃণ প্রভাব
অ্যানিমেশন_নেটার.এক্সএমএল এবং অ্যানিমেশন_লিভ.এক্সএমএল নামে একটি ফাইল তৈরি করুন
animation_enter.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="700"/>
</set>
animation_leave.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="700" />
</set>
এক ক্রিয়াকলাপ থেকে দ্বিতীয় ক্রিয়াকলাপে নেভিগেট করুন
Intent intent_next=new Intent(One_Activity.this,Second_Activity.class);
overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_right);
startActivity(intent_next);
finish();
4. ইভেন্ট ইভেন্টের পিছনে বা দ্বিতীয় ক্রিয়াকলাপ থেকে একটি ক্রিয়াকলাপে নেভিগেট করুন
Intent home_intent = new Intent(Second_Activity.this, One_Activity.class);
overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave);
startActivity(home_intent);
finish();
overridePendingTransition
অবিলম্বে পরে : startActivity developer.android.com/reference/android/app/...
আপনি অ্যান্ড্রয়েড 1.5 তে ওভাররাইডপেন্ডিং ট্রান্সশন ব্যবহার করতে পারবেন না। ওভাররাইডপেন্ডিং ট্রান্সসিশন অ্যান্ড্রয়েড ২.০ এ এসেছিল।
আপনি যদি কোনও ত্রুটি ছাড়াই এটি করতে যাচ্ছেন তবে সাধারণ অ্যানিমেশনগুলি (বা আপনার নিজের) ব্যবহার করে আপনার লক্ষ্য (1.5 বা উচ্চতর) জন্য সঙ্কলন করতে হবে বা ওভাররাইডপেন্ডিং ট্রান্সসিশন ব্যবহার করে লক্ষ্য (২.০ বা উচ্চতর) জন্য আপনাকে সংকলন করতে হবে।
সংক্ষিপ্তসার: আপনি অ্যান্ড্রয়েড 1.5 তে ওভাররাইডপেন্ডিং ট্রান্সসিশন ব্যবহার করতে পারবেন না ।
আপনি যদিও ওএস-এ বিল্ট-ইন অ্যানিমেশনগুলি ব্যবহার করতে পারেন।
গ্যালাক্সি ডিভাইসে:
আপনাকে সেটিংস> বিকাশকারী বিকল্পগুলি ব্যবহার করে ডিভাইসে এটি বন্ধ করা হয়নি তা নিশ্চিত করতে হবে need
ActivityCompat.startActivity () ওয়ার্কস API> 21 ব্যবহার করুন।
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE);
ActivityCompat.startActivity(activity, intent, options.toBundle());
অ্যান্ড্রয়েডের কিছু সংস্করণ কাস্টম Activity
ট্রানজিশনগুলিকে সমর্থন করে এবং কিছুগুলি (পুরানো ডিভাইস) সমর্থন করে না। আপনি যদি কাস্টম ট্রানজিশনগুলি ব্যবহার করতে চান তবে পুরানো সংস্করণ Activity
অনুসারে overridePendingTransition()
পদ্ধতিটি আছে কিনা তা যাচাই করা ভাল অনুশীলন ।
পদ্ধতিটি বিদ্যমান কিনা তা জানতে, প্রতিচ্ছবি এপিআই ব্যবহার করা যেতে পারে। এখানে একটি সহজ কোড যা পদ্ধতিটি উপস্থিত থাকলে তা পরীক্ষা করে ফিরে আসবে:
Method mOverridePendingTransition;
try {
mOverridePendingTransition = Activity.class.getMethod(
"overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } );
/* success */
} catch (NoSuchMethodException nsme) {
/* failure, this version of Android doesn't have this method */
}
এবং তারপরে, আমরা আমাদের নিজস্ব ট্রানজিশন প্রয়োগ করতে পারি, অর্থাত্ যদি বিদ্যমান থাকে তবে এই পদ্ধতিটি ব্যবহার করুন:
if (UIConstants.mOverridePendingTransition != null) {
try {
UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
এখানে, উদাহরণ হিসাবে, সরল ফেড-ইন এবং ফেড-আউট অ্যানিমেশনগুলি রূপান্তর প্রদর্শনের জন্য ব্যবহৃত হয়েছিল ..
জুম আউট অ্যানিমেশন
Intent i = new Intent(getApplicationContext(), LoginActivity.class);
overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
startActivity(i);
finish();
zoom_enter
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
zoom_exit
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:fillAfter="true"
android:duration="500" />
overridePendingTransition
নীচে সমস্ত সম্পর্কিত উত্তরগুলির জন্য প্রযোজ্য: আপনি(0, 0)
কোনও অ্যানিমেশন না চাইলে আপনি পাস করতে পারেন।