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.最终运行效果如下: