2016-05-12 4 views
0

Мне нужна помощь от вас, ребята. Меня поразили интервалы времени. У меня всего 8 изображений. Эти изображения должны выполняться с временными интервалами в процентах. Изображение 1 будет отображаться на экране = 0% от общего времени. Изображение 2 = 20% от общего времени (всего 20%) Изображения 3 = 20% от общего времени (всего 40%) Изображения 4 = 60% от общего времени (всего 60%) Изображения 5 = 80% от общего времени (всего 80%) изображения 6 = 90% от общего времени (всего 90%) изображения 7 = 95% от общего времени (всего 95%) изображения 8 = 100% от общего времени (всего 100%).Временная последовательность в процентах

В приведенном ниже коде я написал как это общее время/8 изображений i.e; например, если я выбираю 2 минуты, и он преобразуется в миллисекунды, а затем он равен 120000/8 = 15000 миллисекунд, что означает, что изображения будут выполняться каждые 15 секунд по окончанию общего изображения, но теперь мне нужно запустить эти изображения в упомянутом выше процентным способом. Если изображения выполняются в процентах, первое изображение должно отображаться в 0% от 120 секунд. Второе изображение должно отображаться в 20% от 120 секунд, т. Е. 24 секунды. Третье изображение должно отображаться со скоростью 40% от 120 секунд, т. Е. 48 секунд.4-го изображения должно отображаться в 60% от 120 секунд, т. Е. 72 секунды. Пятое изображение должно отображаться на уровне 80% от 120 секунд, т. Е. 96 секунд. 6-е изображение должно отображаться на уровне 90% от 120 секунд, т. Е. 108 секунд. 7-е изображение должно отображаться на уровне 95% от 120 секунд, т. Е. 114 секунд. 8-е изображение должно отображаться со скоростью 100% от 120 секунд, т. Е. 120 секунд.

 c = Calendar.getInstance(); 
     SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm"); 
     SimpleDateFormat testhrFormat = new SimpleDateFormat("HH"); 
     SimpleDateFormat testminFormat = new SimpleDateFormat("mm"); 
     String formattedDate = testhrFormat.format(c.getTime()); 
     int minDate = Integer.parseInt(testminFormat.format(c.getTime())); 
     long hrlong = TimeUnit.HOURS.toMinutes(Long.parseLong(formattedDate)); 
     addedmin = hrlong + minDate; 
     twwntyhrformat = displayFormat.format(c.getTime()); 
     SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); 
     SharedPreferences timegot = getSharedPreferences("CHILDTIME", MODE_PRIVATE); 
     String time = timegot.getString("savedwakeuptime", ""); 
     try { 
      Date date = parseFormat.parse(time); 
      String gottime = displayFormat.format(date); 
      String[] timedivided = gottime.split(":"); 
      String gothr = timedivided[0]; 
      long gotlong = TimeUnit.HOURS.toMinutes(Long.parseLong(gothr)); 
      String gotmin = timedivided[1]; 
      int gotintmin = Integer.parseInt(gotmin); 
      addgottime = gotlong + gotintmin; 
      long subtime = addgottime - addedmin; 
      String submilli = String.valueOf(subtime); 
      long submillitimeunit = TimeUnit.MINUTES.toMillis(Long.parseLong(submilli)); 
      flippingtime = (int) (submillitimeunit/8); 
      handler = new Handler(); 
      run = new Runnable() { 
       @Override 
       public void run() { 
        String number = String.valueOf(fliper.getDisplayedChild()); 
        if (number.equals("7")) { 
         handler.removeCallbacks(run); 
        } else { 
         fliper.showNext(); 
         handler.postDelayed(run, flippingtime); 
        } 
       } 
      }; 
      handler.postDelayed(run, flippingtime); 
      Log.d("ConvertMilli--wakeup", String.valueOf(submillitimeunit) + " " + String.valueOf(subtime) + " " + flippingtime); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

Какие рамки вы используете для отображения изображения? –

+0

Я не знаю, что такое структура? –

ответ

0

Вы можете сделать что-то вроде этого:

int totalTime = ....; 
List<Integer> intervals = new ArrayList<Integer>(); 
intervals.add(0); // 0% 
intervals.add((int)(totalTime * 0.20f)); // 20% 
intervals.add((int)(totalTime * 0.40f)); // 40% 
intervals.add((int)(totalTime * 0.60f)); // 60% 
intervals.add((int)(totalTime * 0.80f)); // 80%; 
intervals.add((int)(totalTime * 0.90f)); // 90% 
intervals.add((int)(totalTime * 0.95f)); // 95% 
intervals.add(totalTime); // 100% 

Handler handler = new Handler(); 
Runnable run = new Runnable() { 
    @Override 
    public void run() { 
     fliper.showNext(); 
    } 
}; 

for(int interval:intervals){ 
    handler.postDelayed(run, interval); 
} 
+0

Спасибо за это, я попробую ... –

+0

Bro, он не работает, каждое изображение занимает 2 минуты, чтобы переместить следующее изображение. –

+0

@SampleTesting oh, я использовал '/' вместо '*', я отредактировал свой ответ, чтобы исправить это. Попробуй сейчас. – Titus

Смежные вопросы