【问题标题】:Timing sequence in terms of percentages以百分比表示的时序
【发布时间】:2016-05-12 08:20:09
【问题描述】:

我需要你们的帮助。我被时间间隔击中了。我总共有 8 张图片。这些图像需要以百分比方式以时间间隔运行。 图片 1 要显示在屏幕上 = 总时间的 0%。图片 2 = 总时间的 20%(总共 20%)图片 3 = 总时间的 20%(总计 40%)图像 4 = 总时间的 60%(总计 60%)图像 5 = 80%总时间(总共 80%)图片 6 = 总时间的 90%(总 90%)图片 7 = 总时间的 95%(总 95%)Image 8 = 总时间的 100%(总计 100%)。

在下面的代码中,我写了这样的总时间/ 8 张图像,即;例如,如果我选择 2 分钟并将其转换为毫秒,然后它是 120000/8 = 15000 毫秒,这意味着图像将在最终总图像运行时每 15 秒运行一次,但现在我需要在上面提到的运行这些图像百分比方式。如果图像以百分比运行,则第一个图像应显示为 120 秒的 0%。第二张图片应显示为 120 秒的 20%,即; 24 秒。第三张图像应显示在 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();
        }
    }

【问题讨论】:

  • 您使用哪个框架来显示图像?
  • 不知道什么是框架?

标签: java image time timer


【解决方案1】:

你可以这样做:

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

【讨论】:

  • 兄弟,不是每张图片都需要 2 分钟才能移动下一张图片。
  • @SampleTesting 哦,我使用了/ 而不是*,我已经编辑了我的答案来解决这个问题。现在就试试吧。
  • 现在当我从“/”更改为“*”时图像不会移动
  • @SampleTesting 确保您已正确计算 totalTime
  • 其实这是我的实际代码翻转时间 = (int) (submillitimeunit / 8);在这个 submillitimeunit 中是总时间,8 是总图像。当我运行此代码时,如果我在那里等待 2 分钟,图像会运行并移至下一张图像,它是 120/8 意味着每张图像每 15 秒就会进入下一张图像,但现在我需要它们以提到的百分比。
猜你喜欢
  • 2022-12-23
  • 2013-01-10
  • 2021-06-15
  • 2013-08-28
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2011-12-08
相关资源
最近更新 更多