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

ست کردن انیمیشن به چند View بصورت خودکار و با فاصله زمانی دلخواه ( حل شد )

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

سلام دوستان. 

من چند رویداید ( انیمیشن ) دارم که میخوام با فاصله ی زمانی مثلا ۳ ثانیه بعد از هم انجام بشن و اون ویو هایی که انیمیشن روشون اجرا میشه بلافاصله visibilityشون visible بشه.

ویدیوی مربوط به Threadها و همچنین اون آموزش های متنی استاد رو خوندم. اما هر کاری میکنم نمیتونم این عملیات رو بنویسم. به عبارتی الگوریتم نویسیم خیلی ضعیفه :( از این قضیه نگرانم با اینکه حدود ۳ ماه هست که شروع کردم ... 

اول اومدم با handler این کار رو بکنم چون دیده بودم دوستان با این دستور تاخیر داده بودند و توی دوتا اکتیویتی قبلیم ازش استفاده کردم و جواب هم داد ( چون فقط یک بار نیاز به تاخیر داشتم و همون یک بار از handler استفاده کردم) اما وقتی به این اکتیویتی رسیدم که تقریبا ۱۰ تا تاخیر ۳ ثانیه بین ۱۰ تا عملیات مختلف احتیاج دارم به مشکل خوردم.

از اونجایی که با Threadها آشنایی نداشتم نشستم و ویدیو های استاد رو به دقت نگاه کردم و فهمیدم که میشه از اونها استفاده کرد. ( از چندتا تاپیک دوستان که آدرس داده بودند فهمیدم اولش ... ) خلاصه الان هرکاری میکنم نمیشه :(

اول اومدم چند Thread  تعریف کنم و کار ها رو بسپرم بهشون و قبل از استارت شدن بهشون یه sleep بدم به مدت دلخواه. اما با توجه به اینکه ترد ها زمان کار کردنشون مشخص نیست ( البته فکر میکنم به این دلیل) برنامه کرش کرد و گفت خصوص دستوری که توی ترد دوم نوشتم null هستن ( البته نیستن  ـ شایدم منظورش ترد بوده نمیدونم ... ) خلاصه بعدش الان رسیدم به جایی که یه متد تعریف کردم به این شکل:

private void threads (Runnable run){

        Thread thread = new Thread(run);

        thread.start();
        try {
            thread.sleep(3000);

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        /*if(thread != null) {
            thread.interrupt();
        }*/
    }

حالا اول بگید که درست نوشتم اینو یا نه؟ چون وقتی sleep رو کامنت میکنم اروری نمیده و به سرعت اجرا میشه ( که من میخوام بعد از یه مدتی اجرا کنه ... ) بعدشم توی اکتیویتی Runnable تعریف کردم و کار هامو داخلش گذاشتم و این متد رو صدا زدم با اون مقدار ... البته گفتم که ۱۰ تا کار دارم . و میخواستم ۱۰ تا Runnable تعریف کنم و کار ها رو داخلش بریزم و هر بار این متد و با اون مقدار صدا بزنم ... ولی خب تو همین اولیش کرش میکنه و نتونستم بقیشو بنویسم :|

واضحه که خیلی بد خط و کثیف دارم کار میکنم و الگوریتم افتضاحی به کار گرفتم :( لطفا یکم کمک کنید دوستان :) ( امیدوارم توضیحاتم کامل تفهیم کرده باشه موضوع رو ... )

+1 0
لینک (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
amirfallahi  11 سال پیش
+3 0

با تشکر از علی حاج حسینی عزیز که برای پیدا کردن این جواب خیلی کمکم کرد :)

به جای استفاده از Threadها یه متد ساده به شکل زیر نوشتم:

 private void anim (final View v , long time , final int xmlAnim){

        Animation myanimation = AnimationUtils.loadAnimation(ActivityDeklame.this, xmlAnim);
        myanimation.setStartOffset(time);
        v.startAnimation(myanimation);
        v.setVisibility(View.VISIBLE);

    }

بعد داخل هرجایی که بخوام صداش بزنم با مقادیر دلخواه من انیمیشنی رو روی یک View ست میکنه و اجرا میکنه ( توی پروژه ی من اون view ها در حالت عادی Invisible هستن و به همین دلیل داخل متد گفتم که بعد از اجرا شدن انیمیشن ( fide in )روی صفحه بمونن

به این صورت صدا زدمشون:

 anim(imageback , 3000 , R.anim.sher1);
 anim(imageman , 6000 , R.anim.sher1);
 anim(imagetext , 9000 , R.anim.sher1);

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