1
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始终为零,并且我的进度条也没有变化(它只是空白)导致零的原因......有人可以帮我解决这个问题吗?

4

2 回答 2

2

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

(printedpixel/total_pixels)*100;

printedpixel/total_pixels因此,将始终返回 0。0*100 永远是 0。

您可以使用double's 或float's 来解决此问题。

double  print_prog;
double total_pixels = (double) mPixels_printedpixelcomparison.capacity();
**print_prog** = (printedpixel/total_pixels)*100;
printProgress.setProgress(**print_prog**);
于 2012-08-06T04:36:22.230 回答
1

@nicholas.hauschild 的答案是正确的,但是更简单、更快的解决方案是替换

(printedpixel/total_pixels)*100;

(printedpixel*100/total_pixels);
于 2012-08-06T04:52:25.607 回答