如何使用xml中的可绘制形状绘制半椭圆形(Android)

Posted

技术标签:

【中文标题】如何使用xml中的可绘制形状绘制半椭圆形(Android)【英文标题】:How to draw a semi-oval shape using shape drawable in xml (Android) 【发布时间】:2017-06-22 17:01:49 【问题描述】:

我对在 android 中创建 UI 的这个问题感到震惊。我需要一个基于 xml 的解决方案来解决这个问题。我不想使用任何 SVG 或 PNG 图像来实现解决方案。有没有办法在android中实现这个视图。

【问题讨论】:

【参考方案1】:

您应该使用 xml 的 <layer-list> 元素来绘制这样的 UI。 以下代码将用于创建椭圆形:

<shape android:shape="oval"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#AAAAAA"></solid>
<size android:
    android:>
</size>

这导致以下形状:

一旦您知道如何使用 xml 绘制椭圆形。现在您的下一步是学习如何使用&lt;layer-list&gt; 来实现所需的输出。要学习使用&lt;layer-list&gt;,您可以遵循this 教程。

【讨论】:

我尝试了很多方法。我画不出来。你能告诉我这个吗? 在 android drawable 的 android:shape 属性中默认有基本的形状,如椭圆、圆形、矩形。但它是有限的。你不能用它画出每一个形状。所以你可以做的是,有一个你想要的形状的矢量或png,并使用自定义drawable的layer-list组件将其他项目放在它上面。我在回答中提供了一个链接,您可以参考。【参考方案2】:

通过创建一个新的可绘制文件,该文件将或多或少地描述您要绘制的小部件的外观。然后,您可以将其设置为要更改其原始外观的小部件的背景。如果您想获得问题中显示的形状,我建议您从矩形开始。可绘制文件看起来像这样:

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

    <solid
        android:color="#000"/>

    <corners android:radius="150dp"/> <!-- The value here should specify How much ovally you want shape be -->
</shape>

然后将小部件的背景分配给这个drawable应该可以解决问题,如下所示:

 <LinearLayout
    android:background="@drawable/oval">

希望这对您有所帮助:D

【讨论】:

以上是关于如何使用xml中的可绘制形状绘制半椭圆形(Android)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?

如何以编程方式用笔画制作圆形可绘制对象?

如何防止android层可绘制形状(例如圆形)缩放

如何在 html5 画布中绘制椭圆?

如何在 iOS Swift4 中创建这个圆形?

如何用一些指针边缘绘制椭圆