在android中布局一侧曲线形状

时间:2016-12-02 12:29:52

标签: android android-layout

我想像这样创建布局

enter image description here

我实现了这个我的问题是我不知道如何在布局中获得曲线形状请帮帮我。

enter image description here

这是我的代码

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

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@color/sky">

    </RelativeLayout>


    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_alignBottom="@id/relativeLayout1"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="-30dp"
        android:src="@mipmap/ic_launcher" />


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/relativeLayout1">

    </RelativeLayout>
</RelativeLayout>

5 个答案:

答案 0 :(得分:2)

在此处查看此库:https://github.com/developer-shivam/Crescento您可以按原样使用此效果,或者您可以查看源代码并亲自查看实现!

答案 1 :(得分:2)

我想为时已晚,但会帮助其他人。

Here take a look

 <?xml version="1.0" encoding="utf-8"?>
            <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
                <item>
                    <shape android:shape="rectangle">
                        <solid android:color="@color/colorSignInText"/>
                    </shape>
                </item>
                <item
                        android:top="100dp"
                        android:bottom="0dp"
                        android:left="-70dp"
                        android:right="-70dp">

                    <shape xmlns:android="http://schemas.android.com/apk/res/android"
                           android:innerRadius="50dp"
                           android:shape="rectangle"
                           android:useLevel="true">

                        <solid android:color="@android:color/white"/>
                        <corners

                                android:bottomLeftRadius="0dp"
                                android:topLeftRadius="260dp"
                                android:topRightRadius="260dp"/>

                    </shape>
                </item>
            </layer-list>

答案 2 :(得分:1)

只使用一个可绘制的,但外观和感觉不是那么美丽。只需创建一个可绘制的xml,例如:oval.xml:

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

    <item>
        <shape android:shape="oval">
            <solid android:color="#fefefe"/>
        </shape>
    </item>

</selector>

然后你可以这样设计你的布局:

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

<RelativeLayout
    android:layout_width="match_parent"
    android:background="@color/colorPrimary"
    android:layout_height="200dp">
</RelativeLayout>

<ImageView
    android:layout_marginTop="150dp"
    android:src="@drawable/oval"
    android:layout_width="match_parent"
    android:layout_height="100dp" />

<ImageView
    android:background="@color/colorAccent"
    android:layout_marginTop="100dp"
    android:layout_centerHorizontal="true"
    android:layout_width="100dp"
    android:layout_height="100dp" />

</RelativeLayout>

截图位于:enter image description here

答案 3 :(得分:1)

尝试在onDraw()方法中使用canvas和drawarc。 例如:

@Override protected void onDraw(Canvas canvas){ 
    Paint p = new Paint(); 
    RectF rectF = new RectF(50, 20, 100, 80); 
    p.setColor(Color.BLACK); 
    canvas.drawArc (rectF, 90, 45, true, p); 
}

答案 4 :(得分:0)

尝试一下

<item  android:drawable="@color/colorPrimary"/>

<item
    android:bottom="-120dp"
    android:top="120dp"
    android:left="-120dp"
    android:right="-120dp"
   >

    <shape
        android:shape="oval">
        <solid
            android:color="?android:colorBackground"/>
    </shape>


</item>