我想像这样创建布局
我实现了这个我的问题是我不知道如何在布局中获得曲线形状请帮帮我。
这是我的代码
<?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>
答案 0 :(得分:2)
在此处查看此库:https://github.com/developer-shivam/Crescento您可以按原样使用此效果,或者您可以查看源代码并亲自查看实现!
答案 1 :(得分:2)
我想为时已晚,但会帮助其他人。
<?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>
答案 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>