如何在布局中制作半圆(弧形)视图

时间:2019-05-23 07:52:12

标签: android android-custom-view

我想在布局中创建一个弧形视图,我尝试使用一个库,但是它不能正常工作,如何像这样创建一个弓形视图并在其上附加一个按钮,例如:

enter image description here

我尝试了一些代码,但是它们无法在平板电脑和不同尺寸的屏幕上正确显示

2 个答案:

答案 0 :(得分:1)

这是我想出的一个自定义解决方案。

基本上是在使用

  • 以x dp高度作为主框的视图
  • 另一种以椭圆形为背景的视图
  • 调整上方矩形视图下方的椭圆形,大约是高度的一半

虽然对于各种屏幕,您都必须在values.xml文件中定义高度/边距值,但是我猜可以正常工作。

enter image description here

里面可以看到这样

enter image description here

这是layout file

这不是一个明智的解决方案,但我认为有人可能会从中受益。

答案 1 :(得分:0)

如果您正在开发API> = 21,那么矢量路径可能是一种解决方案。

<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="500.0"
android:viewportHeight="500.0"
android:width="50dp"
android:height="50dp">

<path
    android:fillColor="@color/colorAccent"
    android:pathData="M0 0 H500 V300 H-500"/>
<path
    android:fillColor="@color/colorAccent"
    android:pathData="M0,300 L500 300, A4,2 0 1,1 0,210 Z"/>

</vector>

我们在这里所做的是绘制两条矢量路径(也许只有一条路径是可能的,但出于演示目的,我将以两条路径进行解释)。 enter image description here 第一条路径

<path
    android:fillColor="@color/colorAccent"
    android:pathData="M0 0 H500 V300 H-500 Z"/>

在第一行中,我们设置形状的颜色。然后在第二行开始实际工作。

  • M0 0,这会将光标移动到(x,y)=(0,0)
  • H500,这会画出(0,0)到(500,0)的水平线
  • V300,它绘制了一条从(500,0)到(500,300)的垂直线
  • H-500,这条直线从(500,300)到(0,300)
  • Z,这将封闭路径,即将第一个(0,0)和最后一个(500,300)点连接在一起。

因此,我们最终绘制了一个漂亮的矩形形状(尝试注释第二条路径的代码以查看该矩形)。

更多说明(针对路径2)...