Android实战开发篇 虚线
Posted 彭老希
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android实战开发篇 虚线相关的知识,希望对你有一定的参考价值。
一、水平虚线的实现
(1)在drawable下新建drawable资源 shape_dotted_line.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#32ffffff"
android:dashWidth="4dp"
android:dashGap="4dp" />
<size android:height="1dp" />
</shape>
(2)在xml布局中使用该drawable作为背景
<View
android:layout_width="match_parent"
android:layout_height="1.5dp"
android:background="@drawable/shape_dotted_line"
android:layerType="software" />
注: android:layerType="
software
" 如果不加这个会显示实线
同时view的高度也需要大一点,不然虚线会显示不出来
二、垂直虚线的实现
(1)在drawable下新建drawable资源 shape_dotted_line_vertical.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-300dp"
android:right="-300dp">
<rotate
android:drawable="@drawable/shape_dotted_line"
android:fromDegrees="90" />
</item>
</layer-list>
(2)xml布局中使用
<View
android:id="@+id/dotted_view"
android:layout_width="2dp"
android:layout_height="match_parent"
android:background="@drawable/shape_dotted_line_vertical"
android:layerType="software" />
注: 如果直接旋转的话,在设置给view的背景后,发现虚线只有一小段。因为他其实是把水平的直接旋转过来的,你宽度设置的还是原来水平的,宽度设置的小的就会出现一小段的情况
通过item的 left 和 right 属性来设置左右偏移,水平的线就可以画出600dp来,然后再旋转成垂直的,这样就可以自由设置view的宽度了
三、通过canvas绘制
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(getResources().getColor(R.color.dash_line));
//将虚线绘制出的关键点
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(3);
mPaint.setPathEffect(new DashPathEffect(new float[] {15, 5}, 0));
mPath = new Path();
DashPathEffect
接受两个参数 一个是float数组
,一个是float数
数组代表 实线长度
和 空白长度
,比如 {15, 5} :就是15像素实线 5 像素空白 为一组;
float数代表:偏移量,如果不断改变这个值 可以让虚线动起来
最后在onDraw里将path画出来
mPath.reset();
mPath.moveTo(startX, startY);
mPath.lineTo(endX, endY);
canvas.drawPath(mPath, mPaint);
以上是关于Android实战开发篇 虚线的主要内容,如果未能解决你的问题,请参考以下文章
限时下载 |《 Android物联网开发从入门到实战》国内第一本开发书籍!