适合png图像(框架)内的图像

时间:2016-05-28 19:30:12

标签: android imageview

我有一个png图像,我想将其用作ImageView中图像的框架。 golang downloads page 对不起,它是白色的,这就是看不见的原因

Sorry, it's white that's why invisible 像这样但侧面弯曲

解决方案是什么? 我尝试过将png转换为补丁9,设置父级的背景和图像视图的来源,但都没有效果。图像不适合内部。

1 个答案:

答案 0 :(得分:0)

我已经使用PorterDuff完成了它。设计了一个带有弯曲边框的额外图像,并在自定义图像视图的PorterDuff.Mode.SRC_OVER内应用了setImageResource

这是覆盖功能

@Override
public void setImageResource(int resId) {
    Bitmap rawBmp = BitmapFactory.decodeResource(getContext().getResources(), resId);
    Bitmap rawMask = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.image_frame_arc_filled);
    Bitmap rawBorderMask = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.image_frame_arc);

    Bitmap bmp = Bitmap.createScaledBitmap(rawBmp, rawBmp.getWidth(), rawBmp.getHeight(), true);
    Bitmap mask = Bitmap.createScaledBitmap(rawMask, bmp.getWidth(), bmp.getHeight(), true);
    Bitmap borderMask = Bitmap.createScaledBitmap(rawBorderMask, mask.getWidth(), mask.getHeight(), true);

    Bitmap bitmap = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    canvas.drawBitmap(bmp, 0, 0, null);


    Paint maskPaint = new Paint();
    maskPaint.setXfermode(
            new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
    canvas.drawBitmap(mask, 0, 0, maskPaint);

    maskPaint = new Paint();
    maskPaint.setXfermode(
            new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
    canvas.drawBitmap(borderMask, 0, 0, maskPaint);

    this.setImageBitmap(bitmap);
}