以百分比表示的时序

时间:2016-05-12 08:20:10

标签: java image time timer

我需要你们的帮助。我对时间间隔感到震惊。我总共有8张图片。这些图像需要以百分比的方式以时间间隔运行。 屏幕上显示的图片1 =总时间的0%。图片2 =总时间的20%(总计20%)图片3 < / strong> =总时间的20%(总计40%)图像4 =总时间的60%(总计60%)图像5 = 80%总时间(总计80%)图像6 =总时间的90%(总计90%)图像7 =总时间的95%(总计95%)< strong>图像8 =总时间的100%(总计100%)。

在下面的代码中我写了这样的总时间/ 8幅图像,即;例如,如果我选择2分钟并将其转换为毫秒然后它是120000/8 = 15000毫秒,这意味着图像将在结束总图像运行时每15秒运行一次,但现在我需要运行这些图像,如上所述百分比方式。如果图像以百分比运行,则第一张图像应显示为120秒的0%。第二张图像应显示为120秒的20%,即; 24秒第3张图像应显示为120秒的40%,即; 48秒。第4张图像应显示为120秒的60%,即; 72秒第5张图像应显示为120秒的80%,即; 96秒第6幅图像应显示为120秒的90%,即; 108秒第7幅图像应显示为120秒的95%,即; 114秒第8幅图像应显示为120秒的100%,即; 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();
        }
    }

1 个答案:

答案 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);
}