0

相关问题

以下问题最终无法解决我的问题,如下所述。

语境

我用一个ConstraintLayout. 我的目标是显示一个包含按钮的 SVG 图像:

  1. 它的宽度是屏幕宽度的 100% - 必须重复

  2. 它的高度定义为小部件底部和按钮底部之间的空间 - 必须重复

问题

每次我尝试显示此图像时,drawable 都被严重缩放、严重裁剪或模糊。

一个例子是:

在此处输入图像描述

它应该如下所示:

在此处输入图像描述

许多测试

  1. 我尝试使用ImageView带有属性的src:我使用了每种比例类型,带有和不带有允许设置自定义比率的属性

  2. 我尝试使用ImageView带有背景的src

  3. 我尝试将 aRelativeLayout与重复的背景可绘制文件一起使用:所以我没有使用 SVG 图像,而是使用它的 JPEG 版本,即使这样也导致了不好的结果

  4. 3 的注意事项:我真的想使用 SVG 图像而不是位图图像,因为它将符合分辨率。

我的问题

那么,鉴于所有这些解释(参见:部分上下文)和上面的插图,你将如何继续展示这张图片?

4

1 回答 1

0

使用java代码

    ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#888888")); // bg color
    Drawable vDrawable = AppCompatResources.getDrawable(this, R.drawable.ic_vector_star); // vector drawable
    if (vDrawable != null) {
        Bitmap bitmap = Bitmap.createBitmap(vDrawable.getIntrinsicWidth(), vDrawable.getIntrinsicHeight(),
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        vDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        vDrawable.draw(canvas);
        BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
        bitmapDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); // set repeat

        LayerDrawable drawable = new LayerDrawable(new Drawable[]{colorDrawable, bitmapDrawable});
        findViewById(R.id.frameLayout).setBackground(drawable);
    }

例子

于 2019-04-12T01:49:47.973 回答