View Full Version : انیمیشن رفتن از یک اکتیویتی به اکتیویتی دیگر
Pam.goudarzi
جمعه 02 خرداد 1393, 16:12 عصر
سلام،
حتما خیلی از برنامه های بازار رو دیدین که وقتی روی یک دکمه کلیک می شه، با یک انیمیشن خاص به اکتیویتی دیگر منتقل میشه، می خواستم ببینم چطوری این کار انجام میشه؟
ممنون:لبخندساده:
poorman
جمعه 02 خرداد 1393, 17:16 عصر
سلام
فایلهای انیمیشن مورد نظرتون رو توی پوشه anim بریزید
مثلا این :
slide_in_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>
slide_in_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
بعدش وقتی میخواین به یک اکتیویتی دیگه برید به این صورت :
intent = new Intent(context, secondActivity.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
و توی اکتیویتی اول این متد رو اضافه کنید :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
c0mmander
جمعه 02 خرداد 1393, 22:40 عصر
واقعا زیبا بود افرین.. آقای poorman (http://barnamenevis.org/member.php?295320-poorman) اگر امکانش براتون هست یک آموزشی یا لینکی از این کد هایی که برای انمیشن استفاده میشن رو گفته یا یاد داده باشه.
poorman
جمعه 02 خرداد 1393, 22:59 عصر
والا من اینا رو قبلا چون نیاز پیدا کرده بودم جستجو زدم و پیدا کردم، منبع خاصی نبود، سایت stackOverflow بود
Pam.goudarzi
یک شنبه 04 خرداد 1393, 17:54 عصر
سلام
فایلهای انیمیشن مورد نظرتون رو توی پوشه anim بریزید
مثلا این :
slide_in_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>
slide_in_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
بعدش وقتی میخواین به یک اکتیویتی دیگه برید به این صورت :
intent = new Intent(context, secondActivity.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
و توی اکتیویتی اول این متد رو اضافه کنید :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
خیلی ممنون از جوابتون، ولی وقتی متد دوم رو میزنم میگه Void نوع درستی برای Onactivityresult نیست! چی کار کنم؟
poorman
یک شنبه 04 خرداد 1393, 20:05 عصر
والا نمیدونم چرا گیر میده !!!
شما به جای اینکه کد رو کپی کنی، از توی source بعد override/implement methods تابع onActivityResult رو اضافه کن و کد داخل تابع رو توش بنویس
Sir-Programmer
چهارشنبه 07 مرداد 1394, 00:52 صبح
سلاممم ، من این کدرو تو امولاتور اجرا میکنم کار میکنه تو گوشی و تبلتم تست میکنم جواب نمیده مشکل چیه گوشی نوت سه و تبلت Asus ؟ دقیقا همین کدهای شمارو بدون مشکل تو امولاتور جرا میکنه و جواب میده ولی تو گوشی تست میکنم انیمیشن اجرا نمیشه خواهشاً کمک کنید ممنون !!!
Sir-Programmer
چهارشنبه 07 مرداد 1394, 12:12 عصر
عاقا خواهشاً جواب بدین خیلی جستجو کردم به نتیجه نرسیدم :گریه:
morahimi
چهارشنبه 07 مرداد 1394, 13:32 عصر
سلام
فایلهای انیمیشن مورد نظرتون رو توی پوشه anim بریزید
مثلا این :
slide_in_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>
slide_in_left
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
slide_out_right
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<translate
android:duration="200"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
بعدش وقتی میخواین به یک اکتیویتی دیگه برید به این صورت :
intent = new Intent(context, secondActivity.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
و توی اکتیویتی اول این متد رو اضافه کنید :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
سلام من میخوام وقتی کاربر روی دکمه برگشت کلیک کرد با انیمیشن برگرده ب صفحه قبل چ کنم؟
باید با تابع کلید برگست اون اکتیویتی رو ببندم و اکتیویتی قبلی رو باز کنم؟
morahimi
چهارشنبه 07 مرداد 1394, 13:33 عصر
سلاممم ، من این کدرو تو امولاتور اجرا میکنم کار میکنه تو گوشی و تبلتم تست میکنم جواب نمیده مشکل چیه گوشی نوت سه و تبلت Asus ؟ دقیقا همین کدهای شمارو بدون مشکل تو امولاتور جرا میکنه و جواب میده ولی تو گوشی تست میکنم انیمیشن اجرا نمیشه خواهشاً کمک کنید ممنون !!!
احتمالا یا تنظیمات انیمیشن گوشیت غیر فعاله یا سرعتش زیاده از تو قسمت تنظیمات گوشی سرعتش رو کم کن
morahimi
چهارشنبه 07 مرداد 1394, 13:36 عصر
سلام
بعدش وقتی میخواین به یک اکتیویتی دیگه برید به این صورت :
intent = new Intent(context, secondActivity.class);
startActivityForResult(intent, 500);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
و توی اکتیویتی اول این متد رو اضافه کنید :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}
بجای دو دستور آخر این کد رو برای انتقال بنویس خیال خودتو راحت کن
Intent intent = new Intent(MainActivity.this, Matn.class);
Bundle bndlanimation =
ActivityOptions.makeCustomAnimation(getApplication Context(), R.anim.slide_in_right, R.anim.animation2).toBundle();
startActivity(intent, bndlanimation);
Sir-Programmer
چهارشنبه 07 مرداد 1394, 14:16 عصر
احتمالا یا تنظیمات انیمیشن گوشیت غیر فعاله یا سرعتش زیاده از تو قسمت تنظیمات گوشی سرعتش رو کم کن
سلام خیلی ممنون از راهنمایی درست فرمودین خب این میتونه یه مشکل باشه میشه با استفاده از کد نویسی سرعت رو کم و زیاد کرد ؟؟؟؟؟
morahimi
چهارشنبه 07 مرداد 1394, 14:46 عصر
سلام خیلی ممنون از راهنمایی درست فرمودین خب این میتونه یه مشکل باشه میشه با استفاده از کد نویسی سرعت رو کم و زیاد کرد ؟؟؟؟؟
من بلد نیستم
باید خود کاربر فعالش کنه
hosseinaryai
چهارشنبه 07 مرداد 1394, 15:00 عصر
بجای دو دستور آخر این کد رو برای انتقال بنویس خیال خودتو راحت کن
Intent intent = new Intent(MainActivity.this, Matn.class);
Bundle bndlanimation =
ActivityOptions.makeCustomAnimation(getApplication Context(), R.anim.slide_in_right, R.anim.animation2).toBundle();
startActivity(intent, bndlanimation);
اوهوم .. منم از همین کد استفاده می کنم ، خیلی هم خوب و راحته .. با این تفاوت که من کلن گذاشتمش توی یه متد واسه تمام برنامه هام ازش استفاده می کنم :
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static void onOpenPage(Context context,Class tow_class,int anim_in,int anim_out){
Intent intent = new Intent(context,tow_class);
Bundle build = ActivityOptions.makeCustomAnimation(context,anim_i n,anim_out).toBundle();
context.startActivity(intent,build);
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.