ایجاد تاخیر در هر بار اجرای حلقه for
با سلام
من تو برنامم یه آرایه از imageview ها دارم که میخوام هر کدوم به ترتیب یه تصویر رو نشون بدن که این عمل رو انداختم توی یه حلقه for تا برای هر کدوم از imageview ها یک بار اجرا بشه (تا اینجا مشکلی نیست)
فقط مشکل اینه که میخوام بین اجرای هر کدوم از حلقه های for مذکور یه وقفه (مثلا 100 میلی ثانیه) ایجاد بشه.یعنی وقتی یکی از imageview ها تصویر رو نشون داد imageview بعدی بعد از 100 میلی ثانیه تصویر خودش رو نشون بده و ... و بعد از تموم شدن کامل حلقه for کدهای بعد از for اجرا بشن.
تشکر از راهنماییتون
منظورم یه چیزی شبیه اینه :
for(int i=0; i<10;i++){
imageviewArray.get(i).setimageResource(image);
ایجاد وقفه 100 میلی ثانیه;
}
سلام از این استفاده کن
privatestaticfinallong ANIM_VIEWPAGER_DELAY =3000;
privateHandler h =newHandler();
privateRunnable animateViewPager =newRunnable(){@Overridepublicvoid run()
{if(!pagerMoved){if(pager.getCurrentItem()==pager.getChildCount()){
pager.setCurrentItem(0,true);}else
{
pager.setCurrentItem(pager.getCurrentItem()+1,true);}
h.postDelayed(animateViewPager, ANIM_VIEWPAGER_DELAY);}}};
البته این بخشی از قطعه کد هست ک شاید اصلا متوجه نشید فلذا!
رو بررسی کنید! جواب دومی ک دادن اونجایی ک گفته
Try this
SlideViewPager.java
امیدوارم به کار شما بیاد (لایک فراموش نشه :) )
ازviewpager برای اسلایدرش استفاده کرده و از ViewFlipper استفاده نکرده حالا من نمیدونم شما از کدوم یکی از اینا استفاده کردید ! اگر از دومی استفاده کردی باید از viewpager استفاده کنی
بعد از کلاس handler یک new گرفته برای کنترل اسلایدرش
بعد باید یک متغیر خصوصی تعریف بکنی
privatestaticfinallong ANIM_VIEWPAGER_DELAY =3000;
و یک مقداری رو بر حسب میلی ثانیه بهش نسبت داده تا زمان تاخییر رو بهش بده
بعد برای این اسلایدر از کلاس
Runnable
یک new زده و دستورات شرططی رو گذاشته ک اگر صفحه یاهمون ویوپیجر فرضا تغییر کرد یکاری بکنه وگرنه یکاری این کلا برای تغییر عکس ها در اسلایدر بود بعد از این دو یعنی if and else داخل کد
h.postDelayed(animateViewPager, ANIM_VIEWPAGER_DELAY);
بااستفاده از متغیر h ک هندلر بود و نیو کرده بود با تابع postdelayed مقدار میلی ثانیه رو همونطور ک میبینی بهش داده ک باعث میشه این تاخیر ایجاد بشه!
h.postDelayed(animateViewPager, ANIM_VIEWPAGER_DELAY);
این کد رو کلا در دو جا به کار برده یکی در onresume یکی در متد run
در
publicObject instantiateItem(ViewGroup container,int position)
هم عکس هاش رو قرار داده
که طبق ای دی ک ارسال میشه بهش مقدار کیس مورد نظر قرار میگیره بجای بک گروند قبلی
در کل شما باید با استفاده از متد
postDelayed
که در کلاس handler وجود داره به اون چیزی ک میخوای برسی البته ایتم قبلی رو فراموش نکن ک باید با
publicvoid destroyItem(ViewGroup container,int position,Objectobject){// TODO Auto-generated method stub((ViewPager)container).removeView((View)object);
از بین بببری! وگرنه دوعکس همزمان فعال میشن!ک این هم متدی هست از کلاس های موجود و فقط باید اور رایدش کنی
فرضا یه همچین کدی رو
h.postDelayed(imageviewArray.get(i).setimageResource(image);, ANIM_VIEWPAGER_DELAY);
البته ورودی هاش postDelayed(Runnable, long) هست
شاید این بتونه تو این زمینه کمکت کنه site
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .