کنترل انیمیشن
چطور امکان کنترل کردن انیمیشن وجود دارد؟
یک عکس هست که با زدن دکمه "Play" عکس شروع به چرخیدن می کند. و با زدن دکمه "Puase" انیمیشن به حالت توقف می رود و از دوباره با زدن دکمه "Play" شروع به چرخیدن از همان جای می کند که توقف کرده بود..!
چطور امکان کنترلش هست. با "xml"که من نتونستم کاری بکنم، و هر کاری می کردم انیمیشن ریست می شد. و عکس از نقطه اول شروع به چرخش می کردش..!

img_1 = (ImageView) findViewById(R.id.img_1);
btn_1 = (Button) findViewById(R.id.btn_1);
anim_1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.m);
anim_1.setFillEnabled(true);
anim_1.setFillAfter(true);
img_1.setAnimation(anim_1);
anim_1.startNow();
img_1.invalidate();
getCurrentPlayTime();
btn_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
stopAnimation();
}
});
}
private void stopAnimation(){
CurrentPlayTime = anim_1.getCurrentPlayTime();
anim_1.cancel();
}
private void startAnimation() {
anim_1.start();
anim_1.setCurrentPlayTime(CurrentPlayTime);
}
}
سلام مجدد !
گفتم سعی میکنم تا شب بنویسمش , یکم از شب گذشت ولی .... :D
اول بذارید یه توضیح بدم بهتون , یه جورایی توضیحات همون صفحاتی که بهتون گفتم رو براتون کامل باز میکنم .
اول اینکه حالت عادی با استفاده از Set نمیشه این کار که مد نظر شماست رو پیاده کرد و باید از ValueAnimator یا ObjectAnimator استفاده کنیم .
به صورت کلی ما نیاز به یک Animator داریم تا یک Animation ! در واقع ValueAnimator و ObjectAnimator ویژگی های یک Set معمولی رو دارن و یک سری ( بسیاری ! ) توابع دیگه برای مدیریت اون وجود داره , لازم به ذکر هم هست که برای این کار حداقل به API 11 نیاز داریم !
من دقیقا کد کلاس خودم رو کاملا قرار میدم , کد کاملا واضحه , باز هم اگر جایی ابهامی وجود داشت بفرمایید .
package com.sadeghirad.animpause;
public class ActivityMain extends AppCompatActivity {
private long mCurrentPlayTime;
private ObjectAnimator rotate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnStart = (Button) findViewById(R.id.btnStart);
Button btnStop = (Button) findViewById(R.id.btnStop);
ImageView img = (ImageView) findViewById(R.id.img);
rotate = ObjectAnimator.ofFloat(img, "rotation", 0f, 360f);
rotate.setDuration(5000);
rotate.setRepeatCount(ObjectAnimator.INFINITE);
rotate.start();
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
rotate.start();
rotate.setCurrentPlayTime(mCurrentPlayTime);
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mCurrentPlayTime = rotate.getCurrentPlayTime();
rotate.cancel();
}
});
}
}
موفق باشید./
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .