1.在res/values/目录下新建文件attrs.xml
<? xml version= "1.0" encoding= "utf-8" ?>< resources><declare-styleable name = "dashedline"><attr name = "lineColor" format= "color" /></declare-styleable ></ resources>
2.创建自定义View,DashedLine.java
public class DashedLine extends View {private Paint paint = null;private Path path = null;private PathEffect pe = null;public DashedLine(Context paramContext) {this(paramContext, null);}public DashedLine(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);//通过R.styleable.dashedline获得我们在attrs.xml中定义的//<declare-styleable name="dashedline"> TypedArrayTypedArray a = paramContext.obtainStyledAttributes(paramAttributeSet, R.styleable. dashedline);//我们在attrs.xml中<declare-styleable name="dashedline">节点下//添加了<attr name="lineColor" format="color" />//表示这个属性名为lineColor类型为color。当用户在布局文件中对它有设定值时//可通过TypedArray获得它的值当用户无设置值是采用默认值0XFF00000int lineColor = a.getColor(R.styleable. dashedline_lineColor, 0XFF000000);a.recycle();this. paint = new Paint();this. path = new Path();this. paint.setStyle(Paint.Style. STROKE);this. paint.setColor(lineColor);this. paint.setAntiAlias( true);this. paint.setStrokeWidth(BitmapHelper. dip2px(getContext(), 2.0F));float[] arrayOfFloat = new float[4];arrayOfFloat[0] = BitmapHelper. dip2px(getContext(), 2.0F);arrayOfFloat[1] = BitmapHelper. dip2px(getContext(), 2.0F);arrayOfFloat[2] = BitmapHelper. dip2px(getContext(), 2.0F);arrayOfFloat[3] = BitmapHelper. dip2px(getContext(), 2.0F);this. pe = new DashPathEffect(arrayOfFloat, BitmapHelper.dip2px(getContext(), 1.0F));}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);this. path.moveTo(0.0F, 0.0F);this. path.lineTo(getMeasuredWidth(), 0.0F);this. paint.setPathEffect( this. pe);canvas.drawPath( this. path, this. paint);}}
3.新建布局文件dashedline.xml
<? xml version= "1.0" encoding= "utf-8" ?>< LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"xmlns:dash= "http://schemas.android.com/apk/res/com.example.martixtest"android:layout_width= "fill_parent"android:layout_height= "fill_parent"android:background= "#eee"android:orientation= "vertical" ><com.example.martixtest.myview.DashedLineandroid:layout_width= "fill_parent"android:layout_height= "1dip"android:layout_margin= "10dip"dash:lineColor= "#ff50f8" /><com.example.martixtest.myview.DashedLineandroid:layout_width= "fill_parent"android:layout_height= "1dip"android:layout_margin= "10dip"/><com.example.martixtest.myview.DashedLineandroid:layout_width= "fill_parent"android:layout_height= "1dip"android:layout_margin= "10dip"dash:lineColor= "#f34f71" /></ LinearLayout>
4.最终运行效果如下: