مرجع تمام انیمیشن ها (Animation)
سلام دوستان
خیلی مواقع وقت زیادی رو برای پیدا کردن امینیشن دلخواهم صرف میکنم
اگر ممکنه اینجارو با استفاده از انیمیشن هایی که آشنا هستید پر کنید که دسترسی به اونها راحت تر بشه <
(سعی کنید همراه با Gif توضیح بدید)
بیشتر انیمیشن های همراه با فایل xml رو توضیح بدید ، اگر انیمیشن جالب در کد نویسی سراغ دارید هم معرفی کنید
در ادامه چنتایی رو معرفی میکنم <









پینشهاد میکنم برای شروع از این استفاده کنیم <
Docs خیلی خوبی داره <
کافیه کتابخانه رو به پروژه خودتون اضاف گنید <
بعد از اون از کد های موجود در Demo میتونید کمک بگیرید (این مورد فوقالعاده هست)< برای مثال :
new PuffOutAnimation(VIEW).animate();
فقط من نتونستم روی ContentVIew این انیمیشن رو ست کنم < از دوستان اگر کسی وقت داره < برسی کنه که چطور این ممکن هست < برای زمانی که اکتیویتی خارج و یا وارد میشه <<
View view = G.inflater.inflate(R.layout.main, null);
new PuffOutAnimation(view).animate();
new PuffInAnimation(view).animate();

خب من تاپیک رو ادامه میدم < چند نکته بدست اومده <
این انیمیشن فکر کنم فقط روی View ها اجرا میشه <
و شاید به این دلیل باشه که من فعلا نتونستم اون رو برای زمانی که اکتیوتی منتقل میشه اجرا کنم <
برای حل این مشکل یک کار به ذهنم رسید < اون هم اینکه تمام لایه Root رو بهش ایدی بدیم < و انیمیشن رو روی اون انجام بدیم < و بعد از اون اکتیویتی رو انتقال بدیم <
که بخوبی انجام میشه <
اما من میخوام که این کار وقتی روی ایتم های لیست ویو کلیک میشه اجرا بشه < برای همین کد زیر رو استفاده کنم <
ولی متاسفانه همش کرش میکنم !
View view = G.inflater.inflate(R.layout.main, null).findViewById(R.id.Main_ROOT);
new PuffInAnimation(view).animate();
خب مشکل رو موقتا به این شکل حل کردم < لطفا از دوستان یک راه بهتر رو پیشنهاد بده <
برای اینکه انیمیشن ها روی اکتیویتی ها ست کنیم این کارهارو کردم (که اصولی نیست! ولی کار ساز هست)
روی لایه Roor برای اکتیوتی که قراره ازش خارج بشیم ایدی ست کردم < و متد زیر رو قرار دادیم <
public static void animaation() {
new PuffOutAnimation(G.currentActivity.findViewById(R.id.Main_ROOT)).setDuration(1000).animate();
}
حالا برای کلیک شدن روی آیتم های لیست ویو کد های زیر رو قرار دادیم
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("adapter", "" + position);
final Intent intent = new Intent(G.currentActivity, ActivityEdit.class);
intent.putExtra("POSITION", position);
JamActivity.animaation();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
G.currentActivity.startActivity(intent);
}
}, 1250);
}
});
حالا در قسمت Resume اکتیویتی که قراره بهش بریم < که باید برای این اکتیوی هم روی لایه Root یک آیدی تعریف بشه
LinearLayout editRoot = (LinearLayout) findViewById(R.id.edit_ROOT);
new PuffInAnimation(editRoot).setDuration(1000).animate();

یک انیمیشن چرخش بسیار جالب <
RotateAnimation rotate = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(3000);
rotate.setRepeatCount(Animation.INFINITE);
txtPrgBar.setAnimation(rotate);

SlideAnimation
XML
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1500"
android:toXDelta="0"
android:toYDelta="100%" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1500"
android:fromXDelta="0"
android:fromYDelta="-100%" />
</set>
//=======================================================================================
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1500"
android:toXDelta="0"
android:detachWallpaper="true"
android:toYDelta="-100%" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="1500"
android:fromXDelta="0"
android:detachWallpaper="true"
android:fromYDelta="100%" />
</set>
مشکل اجرای این انیمیشن در کد های XML این هست که اگر VIew در لایه Root نباشه س در تمام صفحه انیمیشن نمیشه ، در نتیجه فقط در لایه پدر انیمیشن میشه ، سعی کردم روشی رو پیدا کنم گه انیمیشن به پدر وابسته نباشه ، اما پیدا نکردم بنابر این مجبور شدم انیمیشن رو با جاوا برابر با ارتفاع صفحه انجام بدم که نتیجه کار جالب باشه
JAVA
int screenHeight = G.context.getResources().getDisplayMetrics().heightPixels;
TranslateAnimation slideToUp = new TranslateAnimation(0, 0, 0, -screenHeight);
final TranslateAnimation slideUpFromDown = new TranslateAnimation(0, 0, screenHeight, 0);
TranslateAnimation slideToDown = new TranslateAnimation(0, 0, 0, screenHeight);
final TranslateAnimation slideDownFromUp = new TranslateAnimation(0, 0, -screenHeight, 0);
slideToUp.setDuration(1500);
slideUpFromDown.setDuration(1500);
slideToDown.setDuration(1500);
slideDownFromUp.setDuration(1500);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .