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);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

其子昱舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值