Android shape实现订单卡片制作(shape画半圆及矩形圆角、渐变、虚线(不显示?))

 这个没有图片怎么搞,要不自己画?两个半圆,一个矩形的四个圆角,一根虚线,组合一下吧:

order_pay_shape_left.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#fff"
        />
    <!--实现半圆,别想了哥们儿,没哪个属性,用corners设置试一把-->
    <corners
        android:bottomLeftRadius = "0dp"
        android:bottomRightRadius = "19dp"
        android:topLeftRadius = "0dp"
        android:topRightRadius = "19dp"/>
</shape>

order_pay_shape_right.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#fff"
        />
    <corners
        android:bottomLeftRadius = "19dp"
        android:bottomRightRadius = "0dp"
        android:topLeftRadius = "19dp"
        android:topRightRadius = "0dp"/>
</shape>

order_details_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!--实现渐变   angle必须是45的倍数 0左到右 90下到上 180右到左 270上到下 -->
    <gradient android:startColor="#FFE9CA" android:endColor="#FFDBAC"
        android:angle="270"/>
    <corners android:radius="4dip"/>
</shape>

order_details_lines.xml 

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:color="#F1CB98"
        android:width = "0.5dp"
        android:dashGap = "2dp"
        android:dashWidth = "3dp"/>
</shape>

main_test.xml

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:layout_margin="17dip"
            android:background="@drawable/order_details_background"
            android:layout_width="match_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            android:layout_height="202dip">

            <TextView
                android:layout_marginTop="25dip"
                android:textSize="25sp"
                android:text="单价:¥500"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:layout_marginTop="70dip"
                android:textSize="20sp"
                android:text="姓名:张三"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:layout_marginTop="10dip"
                android:textSize="16sp"
                android:text="地址:北京市朝阳区望京西路225号"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        </LinearLayout>
        <LinearLayout
            android:layout_marginTop="104dip"
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_height="wrap_content">

            <ImageView
                android:src="@drawable/order_pay_shape_left"
                android:layout_width="34dip"
                android:layout_height="35dip" />
            <View
                android:layout_gravity="center"
                android:layout_marginLeft="5dip"
                android:layout_marginRight="5dip"
                android:background="@drawable/order_details_lines"
                android:layout_width="0dip"
                android:layout_weight="1"
                android:layout_height="1dip"/>
            <ImageView
                android:src="@drawable/order_pay_shape_right"
                android:layout_width="34dip"
                android:layout_height="35dip" />
        </LinearLayout>
    </RelativeLayout>

再熟悉一下shape的属性吧:

     solid

       描述:内部填充

       属性:android:color 填充颜色

      size

       描述:大小

       属性:

                 android:width 宽

                 android:height 高

     gradient

        描述:渐变色

        属性:

                   android:startColor渐变起始颜色

                   android:endColor渐变结束颜色

                   android:centerColor渐变中间颜色

                   android:angle 渐变的角度,angle=0时,渐变色是从左向右,然后逆时针方向转;当angle=90时,渐变色从上往下。angle必然是45的倍数

                   android:type 渐变类型:linear(线性)、radial(放射性,以开始色为中心)、sweep(扫描线式渐变)

                   android:userLevel如果要使用LevelListDrawable对象,就要设置为true。设置true无渐变色,false有渐变色

                   android:grdientRadial渐变半径,只有设置type为radial时,此值才生效

                   android:centerX 渐变中心X点坐标的相对位置

                   android:centerY 渐变中心Y点坐标的相对位置

    stroke

        描述:描边

        属性:

                   android:width 描边宽度

                   android:color 描边颜色

                   android:dashwidth描边样式为虚线时的宽度,值为0时为实线,值大于0时为虚线

                   android:dashGap 描边为虚线时,虚线之间的间隔

    corners

        描述:圆角

        属性:

                   android:radius 四个角半径值

                   android:topLeftRadius左上角半径值

                   android:topRightRadius右上角半径值

                   android:bottomLeftRadius右下角半径值

                   android:bottomRightRadius左下角半径值

    padding

        描述:内边距

        属性:

                   android:left 左内边距

                   android:right 右内边距

                   android:top 上内边距

                   android:bottom 下内边距


虚线为什么不显示或者显示实线:

 1.不显示:View的高度不能大于虚线的高度,设置View的高度大于shape中wieth的长度;

 2.实线:在 AndroidManifest.xml中,android:hardwareAccelerated="false" 加到当前的Activity。

猜你喜欢

转载自blog.csdn.net/Android_hv/article/details/83866021
今日推荐