如何在android中使用RoundedBitmapDrawable制作两个圆角

时间:2017-04-20 09:32:01

标签: android android-drawable android-bitmap

我有一个进度条,我使用RoundedBitmapDrawable传递drawable作为背景,但是如何才能使两个角落?如果我使用xml作为背景,我没有背景。

Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.progressbar);

RoundedBitmapDrawable dr = RoundedBitmapDrawableFactory.create(getResources(), src);

dr.setCornerRadius(Math.max(src.getWidth(), src.getHeight()) / 2.0f);

1 个答案:

答案 0 :(得分:0)

您可以尝试这样做:

  1. android.support.v4.graphics.drawable.RoundedBitmapDrawableandroid.support.v4.graphics.drawable.RoundedBitmapDrawableFactory复制到您的项目中,使用不同的名称(不要忘记更改软件包名称并修复所有导入/等)
  2. 使用this thread中的一个解决方案替换public void draw(Canvas canvas)方法调用(第264行),以编辑drawRoundRect方法。
  3. 使用你的新班级!
  4. 尝试调整Durza007's solution,这是最简单的,但它对我没有用。

    我最终使用Mohammad Mahtabi's solution:将public static Path RoundedRect()添加到我的CustomRoundedBitmapDrawable课程中,并将drawRoundRect替换为

    Path path = RoundedRect(0, 0, mDstRect.width() , mDstRect.height(),  
        mCornerRadius, mCornerRadius, true, true, false, false);
    canvas.drawPath(path, mPaint);
    

    此处,true, true, false, false表示左上角和右上角是圆角。明智的做法是在HalfRoundedBitmapDrawable中配置这些参数以便稍后重用该类。

    在4.4(KitKat)上测试自己,就像一个魅力。