虚线控件有时会用到,横的虚线好实现,而竖的虚线则需要自定义,效果如下:
代码:
(1)自定义控件类:
package com.vvpinche.view; import android.content.Context; import android.content.res.TypedArray; 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; import com.comotech.vv.R; import com.vvpinche.util.CLog; /** * 画虚线 * * @author chenwenbiao * @date 2014-5-15 * @version */ public class DashedLine extends View { private String TAG = getClass().getName(); /** * 类型,0表示横线,1表示竖线 */ private int type = 0; public DashedLine(Context context){ this(context, null); } public DashedLine(Context context, AttributeSet attrs) { this(context, attrs , 0); } public DashedLine(Context context, AttributeSet attrs , int defStyle) { super(context, attrs , defStyle); TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.MyDashLine); //获取自定义属性和默认值 type = mTypedArray.getInt(R.styleable.MyDashLine_type , 0); mTypedArray.recycle(); } @Override protected void onDraw(Canvas canvas) { CLog.d(TAG , "onDraw=====>"); // TODO Auto-generated method stub super.onDraw(canvas); measure(0, 0); /** * 打印控件长宽 */ CLog.d(TAG , "onDraw getWidth=====>" + getWidth()); CLog.d(TAG , "onDraw getHeight=====>" + getHeight()); CLog.d(TAG , "onDraw type=====>" + type); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.DKGRAY); Path path = new Path(); if(type == 1){ path.moveTo(0,0); path.lineTo(0,getHeight()); } else { path.moveTo(0, 0); path.lineTo(getWidth(), 0); } PathEffect effects = new DashPathEffect(new float[] { 5, 5, 5, 5 }, 1); paint.setPathEffect(effects); canvas.drawPath(path, paint); } }
(2)示例布局:
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:ptr="http://schemas.android.com/apk/res/com.comotech.vv" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical" android:paddingLeft="20dp" > <!-- 虚线层 --> <LinearLayout android:id="@+id/user_route_line_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <com.vvpinche.view.DashedLine android:id="@+id/up_dashedLine" android:layout_width="20dp" android:layout_height="45dp" ptr:type="1" /> <com.vvpinche.view.DashedLine android:id="@+id/middle_dashedLine" android:layout_width="16dp" android:layout_height="1dp" ptr:type="0" /> <com.vvpinche.view.DashedLine android:id="@+id/down_dashedLine" android:layout_width="20dp" android:layout_height="120dp" ptr:type="1" /> </LinearLayout> </LinearLayout>
(3)属性配置文件attrs.xml
<?xml version="1.0" encoding="UTF-8"?> <resources> <!-- 虚线自定义属性 --> <declare-styleable name="MyDashLine"> <attr name="type" format="integer" /> </declare-styleable> </resources>
实用简单吧,呵呵。
相关推荐
自定义的树型控件,类似于WinForm的树控件,带虚线连接各子结点,可展开和收缩。结点带有可选框。
主要介绍了Android中自定义水平进度条样式之黑色虚线 的相关资料,需要的朋友可以参考下
C#自定义控件,运行时动态调整控件大小及位置,选中时显示虚线框及8个调整节点。
最简单的方法是利用ShapeDrawable,比如说你想用虚线要隔开两个控件,就可以在这两个控件中加个View,然后给它个虚线背景。 嗯,理论上就是这样子的,实现上也很简单。 <!-- drawable 文件 --> <?xml ...
自定义上图所示效果的控件时,其实就是用Canvas绘制不同效果,比如渐变圆弧背景、圆周白色分割线、中间文字等,这篇博客也根据绘制的顺序依次阐述。 1.自定义CircleProgressBar,继承View,并实现响应的
外层一个LinearLayout,里面一个自定义的控件DragScaleView,为了能够更清楚的看到控件的变化过程,就给控件加了一个灰色带虚线的边框bg_dashgap。 layout文件 <?xml version=1.0 encoding=utf-8?> <...
获得或设置一个值,指示当使用graphics方法或可定位的控件时,自定义坐标系的单位, 有8种可选: 0 自定义 1 表示单位为twip(缇),每英寸=1440缇,每厘米=567缇 2 表示单位为point(磅) ,每英寸=72磅,每磅=20缇 3 表示...
由于项目需要,需要自绘一个GroupBox,可以方便改变边框颜色,可以设置显示的字体
本文实例为大家分享了Android自定义View拖拽缩放矩形框的具体代码,供大家参考,具体内容如下 在开发项目中,需要一个矩形框来实现截屏功能,并且还需要可以任意拖拽和缩放,这就需要自定义View来实现了,具体功能...
可以设置数字颜色,字体颜色,运动步数,运动排名,运动平均步数,虚线下方的蓝色指示条的长度会随着平均步数改变而进行变化。整体效果还是和QQ运动健康界面很像的。 自定义View四部曲,一起来看看怎么实现的。 1....
摘要:VB源码,控件组件,曲线控件 实时曲线控件,绘制实时曲线(类似 Windows 任务管理器CPU使用率曲线),功能很多的一个曲线控件,可自定义的功能非常多,比如可以设置每条曲线的颜色、曲线的类型(实线、虚线等)...
由于公司项目的需求,需要绘制一条竖直的间断线作为分割线。...所有的绘制操作就是在onDraw()方法里面进行的,当然我们的这个自定义控件都是View的直接子类。比如最常使用的TextView、ImageView就是View的直接子
基于VB环境下使用的仿Vista风格button按钮及ICO图标控件源码,新增按钮主题风格样式,标题文字显示特效,颜色特效,标题对齐,标题禁止颜色自定义,标题坐标位置,圆角虚线焦点,实线焦点,字体,前景色.支持彩色...
但是Google提供的布局属性有限,某些功能的实现我们必须使用代码,或者自定义控件的方式例如我们经常使用背景来表示和设置背景,那是不是可以使用layout_radius来表示和设置圆角呢? 使用示例需要在项目build.gradle...
最近项目有要用到环形的进度条,Github上有一个类似的DashedCircularProgress控件,但是他画的进度是通过设置画笔的虚线效果来实现间隔的:progressPaint.setPathEffect(new DashPathEffect(new float[]{dashWith, ...
每个阶段要显示时间、阶段名、状态图标、中间有虚线; 文字上下交错显示; 相邻阶段的文字在垂直方向上是可以相交的; 时间轴的个数不确定,但是要铺满屏幕并且不可滑动; 如果只实现上两点的效果,使用 Recycl
复用性差,自由度低RWidgetHelper优点:优化代码,简化使用,快速开发简介通过继承原生控件,设置自定义属性,解决常用 Selector,Gradient,Shape, 阴影,水波纹等功能原生控件都可实现 **基础功能** ,针对具体...
实例7 虚线与实线 实例8 显示多种字体 实例9 多种风格的窗口 实例10右键弹出菜单 实例11 森林状的关系图 实例12 简单的文本编辑器 实例13使用剪贴板的复制粘贴程序 实例14 文本的拖动处理 实例15 图片的拖动处理 ...
本控件只是一个很简单的控件,比任务管理器里的曲线图略复杂,不具有图例、鼠标移动可以捕捉曲线上的坐标等特性。 具体如下: 1)从CStatic派生,容易在对话框中使用。 2)能够随对话框的缩放自动改变大小,这里...