在android中更新ProgressBar

在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) {

在上面的代码中,print_prog始终为零,并且我的进度条也没有变化(只是空白),原因是零…有人能帮我解决这个问题吗


这里的问题是
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);