自定义控件--虚线
注解:转载自http://407827531.iteye.com/blog/949128。
下面是经过本人编译后的代码。
在Android的UI开发中,有时为了界面美观而需要虚线。
Java代码
package com.custom;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathEffect;
import android.util.AttributeSet;
import android.view.View;
/**
* 画虚线组件
*/
public DashedLine(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);//设置画笔样式
paint.setColor(Color.DKGRAY);
Path path = new Path();
path.moveTo(30, 5); //从什么地方开始,(x、y 的坐标)
path.lineTo(320, 5);//到什么地方结束
/*
*看到这里时,想让它居中显示,但不知道Path 中的哪个属性可用,
*就从开始处到结束处入手了。有朋友知道的请告诉在下,共同学习
*/
PathEffect effects = new DashPathEffect(new float[] { 5, 5, 5, 5 }, 1);
paint.setPathEffect(effects); //Set or clear the patheffect object
/* 例如:
* new float[]{10, 4, 6, 4}。
* 这4个值分别是长线段的长度(10)、长线段与短线段的距离(4)、
* 短线段的长度(6)和短线段与长线段的距离(4)。
* (本例线段长都一样)
* 后面的一个参数为1 :offset into the intervals array
* 我试着将其改为0时没有什么效果,不明白。
*/
canvas.drawPath(path, paint);
/* 其中path参数表示用于绘制路径的轨迹
* paint参数用于指定路径的属性,例如,可以指定路径的颜色等
*/
}
}
在layout文件夹下的xml引用这个控件
Java代码
<com.test.view.DashedLine
android:id="@+id/dashedLine"
android:layout_width="wrap_content"
android:layout_height="10px" />
/*
* 高度可以调整到合适的需求
*/ 1 楼 dahui12344321 2011-04-11 找时间试试