【问题标题】:Draw Rectangle View with curve bottom In Android在Android中绘制带有曲线底部的矩形视图
【发布时间】:2016-09-14 14:40:12
【问题描述】:

美好的一天。我想绘制一个矩形作为视图,但哪个底部应该是弯曲的。我不想应用这样的背景图像或使用任何视图,因为如果我使用视图并设置背景,曲线部分仍然会有不可见的空白空间,我将无法将另一个曲线图像附加到自定义视图的底部曲线。那么我应该如何绘制一个带有底部曲线的矩形并将其用作视图来设置我想要的任何背景颜色?

注意:我听说过一些关于quadTo()cubicTo() android 方法的信息,但我什至不知道如何使用它们我的意思是我不了解文档中的任何内容......所以我来这里寻求帮助.

理想情况下,您可以从图像中看到我真正想要实现的目标,而不是这样的描述......它是一个工具栏或操作栏或其他任何东西,但我必须制作这样的东西......我完全没有想法。(顺便说一句,您会注意到顶部也有一个弯曲的图像......我也必须这样做,我认为我可以通过绘制位图来做到这一点。同时我仍然无法做任何图像android 视图中的部分。)

【问题讨论】:

    标签: android canvas view draw cube


    【解决方案1】:

    只需使用椭圆形项目值即可获得所需的输出。

    curve_toolbar_bg.xml

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

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="0dp"
            android:layout_height="?android:attr/actionBarSize"
            android:background="@drawable/curve_toolbar_bg"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.0">
    
        </android.support.v7.widget.Toolbar>
    </android.support.constraint.ConstraintLayout>
    

    【讨论】:

    • android:background="@drawable/rounded_corner"android:background="@drawable/curve_toolbar_bg" ?
    • @HasanAbdullah 感谢您的指出,我已经更新了原始线程..它应该是curve_toolbar_bg。
    【解决方案2】:

    这就是我为在我的 android 应用程序上实现弯曲状态栏所做的。这创建了一个可以在其他视图上方的工具栏,因此当您滚动视图时,它会位于工具栏下方。

    首先,我通过创建一个无标题主题并从清单中选择该主题来隐藏原始工具栏。然后我创建了一个自己的标题栏,然后通过使用边距和填充,我达到了预期的效果。

    statusbar

    sytles.xml:

        <style name="Notitle.Theme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
    </style>
    

    AndroidManifest.xml

    <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar"/>
    

    arch.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle"/>
    </item>
    <item
        android:bottom="0dp"
        android:left="-100dp"
        android:right="-100dp"
        android:top="-80dp">
        <shape android:shape="oval">
            <gradient
                android:startColor="#2629fb"
                android:endColor= "#2699FB"
                android:angle="90" />
        </shape>
    </item>
    </layer-list>
    

    mainActivity.xml:

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#27292c">
    
    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:contentInsetLeft="0dp"
        android:contentInsetStart="0dp"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        android:contentInsetRight="0dp"
        android:contentInsetEnd="0dp"
        app:contentInsetRight="0dp"
        app:contentInsetEnd="0dp"
        android:layout_marginBottom="-50dp"
        android:elevation="5dp"
        android:background="@drawable/arch">
    
        <TextView
            android:id="@+id/headerWidgetTitle"
            android:text="Title"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="24sp"
            android:paddingTop="10dp"
            android:textColor="#FFFFFF"
            android:paddingBottom="20dp"/>
    
    </androidx.appcompat.widget.Toolbar>
    
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <LinearLayout
                android:id="@+id/scrollLinearLayout"
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:orientation="vertical"
                android:elevation="0dp"
                android:paddingTop="50dp"
                android:clipToPadding="false">
    
                <!-- Your Views -->
          
            </LinearLayout>
    
        </ScrollView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多