首页 > 解决方案 > 更改尺寸时,椭圆形(圆形)和环形可绘制对象增长不均匀

问题描述

我有一个圆形进度条,它由两个可绘制的 xml 文件组成。

--一个包含一个实心圆,外圆周加上一个环。

——另一个是上面提到的戒指。它是逐渐消失的进度条,显示如下图。

我使它与 layout_width 和 layout_height=160dp 一起工作(见图),但是当我将它放大到 260dp 时,由于某种原因,实心圆和环不再“同步”增长:两个环都保持在正确的位置,但实心圆圈增长得比它应该的多一点,创造了一个不想要的“边缘”(参见另一张图片)。

我尝试了各种尺寸和厚度的变化,innerRadius 代替了 innerRadiusRatio,还有 wrap_content、paddings ......我能想到的所有参数,但似乎没有任何效果。

我也尝试过使用圆形的 .png 作为背景,但我遇到了同样的问题:当你放大尺寸时,圆形会变得太多,从而形成一个边缘。

我确定它一定很简单,但我找不到;有谁能够帮我?任何想法将不胜感激......

圈好

圈错了

相关代码:

活动主.xml:

<ProgressBar
    android:id="@+id/progressBarCircle"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="260dp"
    android:layout_height="260dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_marginTop="16dp"
    android:layout_marginBottom="16dp"
    android:background="@drawable/rosco_vacio_y_fondo"
    android:indeterminate="false"
    android:max="100"
    android:progress="100"
    android:progressDrawable="@drawable/rosco_lleno"
    android:rotation="-90"
    app:layout_constraintBottom_toTopOf="@+id/adView"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/contadorM"
    app:layout_constraintVertical_bias="0.0"
    app:layout_constraintVertical_chainStyle="packed" />

rosco_lleno.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="2.3"

    android:shape="ring"
    android:thickness="10dp"
    android:useLevel="true">
    <gradient android:startColor="@color/barraLlena"
        android:endColor="#701914"/>
</shape>
    </item>

</layer-list>

rosco_vacio_y_fondo.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list>
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:innerRadiusRatio="2.3"
        android:shape="oval"
        android:useLevel="true">
        <solid android:color="@color/fondoRosco" />
    </shape>
</item>

<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="2.3"
    android:shape="ring"
    android:thickness="10dp"
    android:useLevel="false"
    >

    <solid android:color="@color/roscoVacio" />

</shape>
</item>
<

标签: androidlayoutdrawable

解决方案


推荐阅读