在android中更新ProgressBar
在上面的代码中,print_prog始终为零,并且我的进度条也没有变化(只是空白),原因是零…有人能帮我解决这个问题吗在android中更新ProgressBar,android,progress-bar,touch-event,ontouchlistener,Android,Progress Bar,Touch Event,Ontouchlistener,在上面的代码中,print_prog始终为零,并且我的进度条也没有变化(只是空白),原因是零…有人能帮我解决这个问题吗 这里的问题是intdivision。在Java中,int除法截断余数,以便返回int Image.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) {
这里的问题是
int
division。在Java中,int
除法截断余数,以便返回int
Image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Trace(array);
.....
int print_prog;
int total_pixels = mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);
......
}
private Bitmap Trace(int[] imageArray)
{
.....
printedpixel +=100;
.....
}
因此,printedpixel/total_pixels
将始终返回0。0*100总是0
您可以使用double
或float
修复此问题
(printedpixel/total_pixels)*100;
@nicholas.hauschild的答案是正确的,但是更简单、更快的解决方案是替换
double print_prog;
double total_pixels = (double) mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);
与
setProgress()API只接受int…,并且int会截断,但它仍然应该有正确的值???为什么它是零?@jxgn它会截断,因为,例如,150/200=0.75。然后,
75
部分被截断,因为它是Int,而你总是有0。那么100 i乘法呢?确定更改为float,并在setProgress()内将print_prog键入Int,这很有效……谢谢:)@jxgn如果printedpixel
和总像素
是Int
s,那么(printedpixel*100/总像素)
也将是一个Int
(printedpixel/total_pixels)*100;
(printedpixel*100/total_pixels);