在<shape>可绘制对象中缩放笔划宽度

时间:2018-10-24 11:37:51

标签: android

所以我有一个快乐的小形状:

<shape android:shape="oval">
    <size android:width="20dp"
          android:height="20dp"/>
    <solid android:color="#FF88EE88"/>
    <stroke android:color="#FFEE8800" android:width="2dp"/>
</shape>

您会看到,它非常丰满,厚实,小巧,非常可爱。

现在,当我尝试将其作为某些View的背景时,<size/>会缩放到该View的大小,但其<stroke/>保持不变,这意味着在某些View上几乎看不到它500x500视图。

在Android中用尺寸调整笔触宽度比例的正确方法(如果有)是什么?

4 个答案:

答案 0 :(得分:2)

当您使用xml文件时,必须尝试使用​​不同的宽度和高度测量来运行,以使其适合您的Background drawable。如下代码:

class-helper

或最简单,最简单的方法来制作此视图的.png图像,并将其放在“某些视图的背景”中。

答案 1 :(得分:2)

将可绘制形状转换为可绘制向量:

<vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">

    <path
        android:fillColor="#FF88EE88"
        android:pathData="M1 12a11 11 0 1 1 0 0.0001"/>

    <path
        android:strokeColor="#FFEE8800"
        android:strokeWidth="2"
        android:pathData="M1 12a11 11 0 1 1 0 0.0001"/>

</vector>

现在,无论以任何尺寸使用它,它都能以任意dpi完美缩放:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:background="@drawable/circle_with_stroke"/>

    <FrameLayout
        android:layout_width="240dp"
        android:layout_height="240dp"
        android:background="@drawable/circle_with_stroke"/>

</FrameLayout>

enter image description here

答案 2 :(得分:1)

you can use this library to make text and layout design responsive.

just add this dependency in build.gradle(app level).

///////////////////////////////////////////////// ////////////

dependencies {
  implementation 'com.intuit.sdp:sdp-android:1.0.6'
}

///////////////////////////////////////////////// //////////////

dependencies {
  implementation 'com.intuit.ssp:ssp-android:1.0.6'
}

始终喜欢将ssp用于文本大小,而将sdp用于页边距,填充和布局大小。

之后,二维类将添加到您的项目中。

希望它可以解决您的问题。

答案 3 :(得分:1)

您可以为每个dpi创建单独的dimins文件,并使用基于dpi具有不同值的通用变量。

  1. IStructuredSelection放入每个dimens.xml文件夹中

  2. 在每个维度中定义一个具有相同名称的公用变量,并分配适当的值。

    values

  3. 在形状xml中使用该变量

    <dimen name="your_value">2dp</dimen>