¿Cómo puedo hacer esto sin una imagen? ¿Qué tal si lo dibujo yo mismo? Dos semicírculos, cuatro esquinas redondeadas de un rectángulo y una línea de puntos, combinémoslo:
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>
orden_detalles_fondo.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>
prueba_principal.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>
Familiaricémonos nuevamente con los atributos de la forma:
sólido
Descripción: Acolchado interno
Atributo: android:color color de relleno
tamaño
Descripción: Tamaño
Atributos:
android: ancho ancho
android: altura
degradado
Descripción: color degradado
Atributos:
android:startColor color inicial del degradado
android:endColor color final del degradado
android:centerColor degradado color medio
android:angle El ángulo del degradado. Cuando el ángulo = 0, el color del degradado es de izquierda a derecha y luego gira en sentido antihorario; cuando el ángulo = 90, el color del degradado es de arriba a abajo. El ángulo debe ser múltiplo de 45.
android:type tipo de gradiente: lineal (lineal), radial (radiactivo, centrado en el color inicial), barrido (gradiente de línea de escaneo)
android:userLevel debe establecerse en verdadero si desea utilizar el objeto LevelListDrawable. Establezca verdadero para no tener color degradado, falso para tener color degradado
android:grdientRadio de gradiente radial, este valor solo tiene efecto cuando el tipo se establece en radial
android:centerX posición relativa de las coordenadas del punto X del centro del gradiente
android:centerY posición relativa de las coordenadas del punto Y del centro del gradiente
ataque
Descripción: Accidente cerebrovascular
Atributos:
android: ancho ancho de trazo
android: color trazo de color
android:dashwidth El ancho del estilo de trazo cuando es discontinuo. Cuando el valor es 0, es una línea continua. Cuando el valor es mayor que 0, es una línea discontinua.
android:dashGap Cuando el trazo es una línea de puntos, el intervalo entre las líneas de puntos
esquinas
Descripción: esquinas redondeadas
Atributos:
android: radio valores de radio de cuatro esquinas
android: valor del radio de la esquina superior izquierda topLeftRadius
android: valor del radio de la esquina superior derecha topRightRadius
android:bottomLeftRadius valor del radio de la esquina inferior derecha
android:bottomRightRadius valor del radio de la esquina inferior izquierda
relleno
Descripción: Relleno
Atributos:
android: relleno izquierdo izquierdo
android: relleno derecho derecho
android: relleno superior superior
android: acolchado inferior inferior
Por qué no se muestra la línea discontinua o la línea continua:
1. No mostrado: la altura de la Vista no puede ser mayor que la altura de la línea de puntos. Establezca la altura de la Vista para que sea mayor que la longitud del ancho de la forma;
2. Línea sólida: en AndroidManifest.xml, android:hardwareAccelerated="false" se agrega a la actividad actual.