آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایجاد انیمیشن با Thread ها

behnam2000  11 سال پیش  11 سال پیش
0 0

سلام دوستان همانطور  که می دانید استفاده از فایل gif  در برنامه کاری دشوار هست.لذا به این فکر افتادم که  فریم های  انیمیشن مورد نظر را به صورت ایمیج ذخیره کنم و با استفاده از  Handler ها بین یک بازه ی زمانی تصاویر رو عوض کنم. کد زیر به ذهنم رسید اما مشکل اینجاست که فقط دومین فریم ست میشود و بقیه فریم ها ست نشده باقی می مانند.با فرض اینکه انیمیشن ما 5 فریم دارد:

final ImageView loading1 = (ImageView) findViewById(R.id.loading1); //first frame
final Handler handler1 = new Handler(); handler1.postDelayed(new Runnable() { @Override public void run() { loading1.setImageResource(R.drawable.loading2);//set second frame } }, 900); // 0.9 second delay
/////////////////////////////////////////////////////////////////////////////////////
final Handler handler2 = new Handler(); handler2.postDelayed(new Runnable() { @Override public void run() { loading1.setImageResource(R.drawable.loading3);//set third frame
} }, 900); // 0.9 second delay
/////////////////////////////////////////////////////////////////////////////////////
final Handler handler3 = new Handler(); handler3.postDelayed(new Runnable() { @Override public void run() { loading1.setImageResource(R.drawable.loading4);//set fourth frame
} }, 900); // 0.9 second delay
//////////////////////////////////////////////////////////////////////////////////////
final Handler handler4 = new Handler(); handler4.postDelayed(new Runnable() { @Override public void run() { loading1.setImageResource(R.drawable.loading5);//set fifth frame
} }, 900); // 0.9 second delay

 

0 0
به جای استفاده از هنلدر میتونید از یک ترد استفاده کنید و توش بین هر فریم یه Thread.sleep بزنید . (11 سال پیش)
0 0
لینک (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
behnam2000  11 سال پیش
0 0

آقای کاشی زاده کد زیر رو بنا به گفته ی شما امتحان کردم اما باعث کرش برنامه میشه.میدونین مشکل از کجاست؟

         Thread thread = new Thread(new Runnable() {

           @Override
           public void run() {
               try {
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading2);
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading3);
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading4);
                   Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading5);
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading6);
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading7);
                    Thread.sleep(900);
                    loading1.setImageResource(R.drawable.loading8);

                }
                catch (InterruptedException e) {
                    e.printStackTrace();
                }
           }
        });
        thread.start();
0 0
اروری که داده رو بررسی کنید ببنید چیه ، و اینجا قرار بدید (11 سال پیش)
0 0
در ضمن برای اعمال تغییر در UI برنامه باید این عمل در ترد مین انجام بشه و نیاز به هندلر هم دارید (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .