在android中更新ProgressBar

时间:2012-08-06 04:32:57

标签: android progress-bar ontouchevent ontouchlistener

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;
    .....   


 }
  

在上面的代码 print_prog 总是为零,我的进度条中没有任何变化(它只是空白)原因为零......任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

这里的问题是int分裂。在Java中,int除法截断余数,因此它可以返回int

(printedpixel/total_pixels)*100;
因此,

printedpixel/total_pixels将始终返回0。 0 * 100总是为0。

您可以使用doublefloat来解决此问题。

double  print_prog;
double total_pixels = (double) mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);

答案 1 :(得分:1)

@ nicholas.hauschild的答案是正确的,但更简单,更快速的解决方案将是取代

(printedpixel/total_pixels)*100;

(printedpixel*100/total_pixels);