ورود

View Full Version : Object Animator



pouya1999best@g
شنبه 11 مرداد 1393, 02:55 صبح
دوستان چجوری میشه انیمشن های نوشته های با Object Animator رو روی حرکت اکتیویتی ها اعمال کرد؟؟؟
یعنی موقع ورود یا خروج از اکتیویتی انیمیشن اعمال شه

id1385
شنبه 11 مرداد 1393, 14:42 عصر
اول توی فولدر res یه فولدر به اسم anim درست کن
فایلهای xml انیمیشن رو توی اون بریز مثال :

slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%"
android:toXDelta="0%" />




slide_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="-100%" />



حالا توی تعویض اکتیویتیا ازشون اسفاده کن
مثال:


final Button btn = new Button(this);
OnClickListener listnr=new OnClickListener() {
@Override
public void onClick(View v) {
Utils.textView = (TextView)findViewById(R.id.appName);
if(Utils.StartApp()){
Intent intent = new Intent(Luncher.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
finish();
}
}
};
btn.setOnClickListener(listnr);




در کد بالا توی این خط

overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

از انیمیشن های بالا استفاده شده


موفق باشید

pouya1999best@g
شنبه 11 مرداد 1393, 17:41 عصر
دوست عزیز ObjectAnimator رو عرض کردم؛
اصلا با فولدر anim کاری نداره؛
خودش کتابخانه داره.

harani
شنبه 11 مرداد 1393, 19:02 عصر
object animator برای اندروید 3 به بالا (api 11) استفاده میشه .

برای ساخت انیماتور بایستی یک پوشه ی animator (ن anim) در res بسازید .تفاوت آن با anim این است که مثلاً میتونید در animator نسبت به محور y چرخش بدید که این موجب افکت 3 بعدی میشه .
اینم یه نمونه کد :


<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0" android:valueTo="360" android:propertyName="rotationY" >
</objectAnimator>



ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(mContext, R.animator.flipping);
anim.setTarget(A View Object reference goes here i.e. ImageView);
anim.setDuration(3000);
anim.start();

pouya1999best@g
شنبه 11 مرداد 1393, 19:34 عصر
object animator برای اندروید 3 به بالا (api 11) استفاده میشه .

برای ساخت انیماتور بایستی یک پوشه ی animator (ن anim) در res بسازید .تفاوت آن با anim این است که مثلاً میتونید در animator نسبت به محور y چرخش بدید که این موجب افکت 3 بعدی میشه .
اینم یه نمونه کد :


<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:valueFrom="0" android:valueTo="360" android:propertyName="rotationY" >
</objectAnimator>



ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(mContext, R.animator.flipping);
anim.setTarget(A View Object reference goes here i.e. ImageView);
anim.setDuration(3000);
anim.start();
من کتابخانه دارم؛
بهم بگید چجوری رو حرکت اکتیویتی ها اعمالش کنم

harani
شنبه 11 مرداد 1393, 20:16 عصر
کتابخانه نیاز نداره ها اهان کتابخانه ساپورت داری میشه لینکشو برا من بذاری .

میتونی overridePendingTransition استفاده کنی . http://www.41post.com/3368/programming/android-changing-the-animation-between-activities

pouya1999best@g
شنبه 11 مرداد 1393, 20:27 عصر
چجوری object animator رو روش اعمال کنم؟؟؟

harani
شنبه 11 مرداد 1393, 20:38 عصر
به جای R.anim میزنی R.animator ذیگه .

pouya1999best@g
شنبه 11 مرداد 1393, 20:42 عصر
عزیزم؛میگم برنامم انیمیشن رو از کتابخانه nineoldandroids.jar دریافت میکنه؛
هیچ فولدر animatorی رو استفاده نکردم.
حالا چجوری اعمالش کنم؟؟؟:لبخندساده:

harani
شنبه 11 مرداد 1393, 20:46 عصر
من از کتابخانه ای که گفتید استفاده نکردم animtion ها متدهای listener دارند که یکی از آن ها animtion end هستش تو اونجا میتونید استارت اکتیوتی کنید یا هر کار دیگه .

یا از handler post delay استفاده کنید .

pouya1999best@g
شنبه 11 مرداد 1393, 20:47 عصر
میشه یه نمونه کد قرار بدی؟؟

harani
شنبه 11 مرداد 1393, 20:54 عصر
برای handler داریم :


Handler handler = new Handler();
handler.postDelayed(new Runnable(){
@Override
public void run() {
.... stratactivity
}
}, 1000);




یا

مثلاً anim یک anim اندروید :



anim.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
}
});


تو end میتوونی اکتویتیو استارت کنی کتابخانه ای که استفاده میکنی حتماً مشابه چنین lintener ای دارد .

pouya1999best@g
شنبه 11 مرداد 1393, 21:17 عصر
میشه اینو واسم اصلاحش کنید؟
یعنی اینکه واسه حرکت اکتیویتی اعمال بشه

final ObjectAnimator anim = ObjectAnimator.ofFloat(MainActivity.this,"rotation",500);
anim.addListener(new AnimatorListener(){
@Override
public void onAnimationStart(Animator arg0){}
@Override
public void onAnimationRepeat(Animator arg0){}
@Override
public void onAnimationEnd(Animator arg0){
anim.start();}
@Override
public void onAnimationCancel(Animator arg0) {}});

harani
شنبه 11 مرداد 1393, 21:40 عصر
anim.start رو قبل از addlistener صدا بزن و بعد تو end استارت کن .addListener داشت setListener نداشت ؟

pouya1999best@g
شنبه 11 مرداد 1393, 21:53 عصر
منظورتو نمیفهمم؛میشه برام بنویسی؟؟
setlistener نداره

harani
یک شنبه 12 مرداد 1393, 12:08 عصر
منظورتو نمیفهمم؛میشه برام بنویسی؟؟
setlistener نداره

منظوری نداشتم درست دارین میرن .

pouya1999best@g
یک شنبه 12 مرداد 1393, 12:11 عصر
الان کد بالا کامله؟؟؟
یعنی توی حرکت اکتیویتی ها انیمیشن اعمال میشه؟؟؟
توی متد خاصی لازم نیست بزارم؟؟؟

harani
یک شنبه 12 مرداد 1393, 20:49 عصر
anim.start رو قبل از addlistener صدا بزن و بعد تو end استارت کن . فکر نکنم مشکلی باشه .

pouya1999best@g
یک شنبه 12 مرداد 1393, 20:51 عصر
منظورتو از صدا زدن نمیفهمم
خواهش میکنم کدی که بالا دادم رو ویرایش کن و بده که مسئله ختم بخیر شه!!!:لبخند:
کد نهایی رو بده

harani
یک شنبه 12 مرداد 1393, 23:23 عصر
final ObjectAnimator anim = ObjectAnimator.ofFloat(MainActivity.this,"rotation ",500);

anim.start()
anim.addListener(new AnimatorListener(){

@Override
public void onAnimationStart(Animator arg0){}
@Override
public void onAnimationRepeat(Animator arg0){}
@Override
public void onAnimationEnd(Animator arg0){
startActivity();

;}

@Override
public void onAnimationCancel(Animator arg0) {}});



فکر کنم این دیگه جواب بده .

pouya1999best@g
دوشنبه 13 مرداد 1393, 01:27 صبح
:گریه::گریه::گریه:درست نشد:گریه::گریه::گریه:

pouya1999best@g
سه شنبه 14 مرداد 1393, 16:48 عصر
هیچ راه دیگه ای نداره؟؟؟؟
کمکمکمکمک