Imageview没有更新位图,android?

时间:2018-05-14 12:57:13

标签: android canvas bitmap imageview

我有一个4页的viewpager,每个viewpager页面都包含一个recylerview。 Recyclerview包含20-30个元素的列表,在每个元素中我都有一个imageView,其功能是下载文件并将其替换为画布位图,显示循环进度中的下载百分比

我正在下载文件并在画布的帮助下显示进度并更新imageview。 以下是代码

对于平板电脑,radiusDifference为7,移动屏幕为5。

private void circularImageBar(ImageView iv2, int progess, int radiusDifference) {
        System.out.println("sowload percent-" + progess);

            Bitmap b = null;
            Canvas canvas = null;
            Paint paint = null;
            if (b == null) {
                b = Bitmap.createBitmap(iv2.getWidth(), iv2.getHeight(), Bitmap.Config.ARGB_8888);
                canvas = new Canvas(b);
                paint = new Paint();
            }

            paint.setColor(Color.DKGRAY);
            paint.setStrokeWidth(iv2.getWidth() / 10);
            paint.setStyle(Paint.Style.STROKE);
            paint.setAntiAlias(true);
            canvas.drawCircle(iv2.getWidth() / 2, iv2.getHeight() / 2, 
                    (iv2.getWidth() / 2) - radiusDifference, paint);


            int tintColor = Color.parseColor("#F81004");
            paint.setColor(tintColor);
            paint.setStrokeWidth(iv2.getWidth() / 10);
            paint.setAntiAlias(true);
            final RectF oval = new RectF();
            paint.setStyle(Paint.Style.STROKE);
            oval.set(radiusDifference, radiusDifference, iv2.getWidth() - radiusDifference, 
                    iv2.getHeight() - radiusDifference); 

            canvas.drawArc(oval, 270, ((progess * 360) / 100), false, paint);

            iv2.setImageBitmap(b);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                iv2.setForegroundGravity(View.TEXT_ALIGNMENT_CENTER);
            }
            iv2.requestLayout();
    }
}

下载正在运行,甚至创建了位图,但它没有反映在UI中。

1 个答案:

答案 0 :(得分:0)

试试这个。我已经添加了一些改进,所以现在它应该工作,无论是ImageView的高度和高度。

<table>
    <thead><tr>
            <script>
            for(var j=1; j<=10; j++)
            {
                document.write("<th><label>"+i+"</label></th>");
            }
            </script>
            </tr>
    </thead>
    <tbody>
        <script type="text/javascript"> 
for(var i =1; i<=10; i++)
{
    document.write("<tr>");
    for(var k=1; k<=10; k++)
        {               
            document.write("<td></td>");    
        }
    document.write("</tr>"); 
}   
</script>
    </tbody>
</table>