我需要你们的帮助。我对时间间隔感到震惊。我总共有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();
}
}
答案 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);
}