1.画水平虚线

直接建一个shape,设置stroke属性就行了,再将这个属性直接作为background的drawable属性引入就行了
注意在4.0以上的真机加一句

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="line"><solid android:color="@color/red"></solid><strokeandroid:dashWidth="10dp" //虚线的小线段长度android:dashGap="10dp" //间隔距离android:color="@color/app_color"android:width="4dp"/>
</shape>
<Viewandroid:id="@+id/content"android:layout_width="match_parent"android:layout_height="30dp"android:layout_gravity="center_vertical"android:background="@drawable/dottde_line"android:layerType="software"  />  //4.0以上的加,不然真机中是实线

2.画竖直虚线

这里借鉴一个 rotate属性去实现,代码如下

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:left="-30dp"android:right="-30dp"><rotateandroid:drawable="@drawable/dottde_line"android:visible="true"android:fromDegrees="90"></rotate></item>
</layer-list>
<Viewandroid:id="@+id/content_2"android:layout_width="30dp"android:layout_height="match_parent"android:layout_gravity="center_horizontal"android:background="@drawable/dottde_v_line"android:layerType="software" />

原理:
设置了fromDegress之后,会先画一条水平虚线,然后再瞬间顺时针旋转90度角,但是单这样还不行,因为我的view的宽度设置的是2dp,高度是match_parent,发现出来的只有一个点,郁闷了。
之前说过,他的原理是先画一条水平线,然后再旋转,那么view的宽度只有2dp,他就只能画2dp,所以旋转后也就是一个点。因此用item的可以设置偏移量的属性,我们将rotate节点放于一个item节点下面,然后给item设置左右都为-30dp的偏移量,这样他在先画水平线的时候,由于负的偏移量(就和负的margin一样),就可以画出60dp长的线,然后再旋转,就可以得到一条竖直虚线。

3用自定义view去画

public class DashedLineView extends View{public  Context ctx;public DashedLineView(Context context, AttributeSet attrs) {super(context, attrs);ctx=context;}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);Paint paint = new Paint();paint.setStyle(Paint.Style.STROKE);paint.setColor(getResources().getColor(R.color.red));paint.setStrokeWidth(dip2px(ctx,2));Path path = new Path();path.moveTo(0, 0);path.lineTo(0, 900);PathEffect effects = new DashPathEffect(new float[]{6, 4, 4, 4}, 2);paint.setPathEffect(effects);canvas.drawPath(path, paint);}/*** 根据手机的分辨率从 dp 的单位 转成为 px(像素)*/public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}
}

原理:

4.认识图层列表

地址 https://developer.android.google.cn/guide/topics/resources/drawable-resource.html?hl=zh-cn#LayerList

转载于:https://www.cnblogs.com/prophet-it/p/6651033.html

用xml画水平虚线和竖直虚线.md相关推荐

  1. android xml中设置水平虚线及竖直虚线

    水平线背景 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android=" ...

  2. android 横向虚线,Android实现水平虚线和竖直虚线

    水平虚线 android:shape="line"> android:width="1dp" android:color="#747474&qu ...

  3. Android绘制竖直虚线完美解决方案—自定义View

    Android绘制竖直虚线完美解决方案-自定义View 开发中我们经常会遇到绘制虚线的需求,一般我们使用一个drawable文件即可实现,下面我会先列举常规drawable文件的实现方式. 使用dra ...

  4. Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  5. 图像水平梯度和竖直梯度代码_Opencv图像处理(三)

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  6. OPENCV(四)对图像进行水平投影和竖直投影

    本篇博客讲述如何使用python的openCV库实现对图像的水平投影和竖直投影: 关键代码如下: import cv2#读取图片 image1 = cv2.imread('../img/123.png ...

  7. 利用sobel算子提取图像的水平特征和竖直特征

    一. sobel滤波器介绍 sobel滤波器常用来提取灰度图像的水平边缘(水平特征)和竖直边缘(竖直特征) 二. sobel算子    纵向算子,提取图像水平边缘 ↑ 横向算子,提取图像竖直边缘 ↑ ...

  8. 自定义Imageview控件实现多种手势操作 (拖动、水平缩放、竖直缩放、等比例缩放、双击、长按)

    项目中需要使用自定义控件的多种手势操作,之前在网上查阅资料的时候发现能找到的一般是只实现了其中的几种,这次就把我做的控件分享一下,人人为我,我为人人嘛,哈哈! 这个自定义控件实现的主要功能是控件的拖动 ...

  9. 【opencv】26.图像水平边缘和竖直边缘的算子数学分析

    这里我们要细分了,虽然GxG_xGx​是对x求偏导得到,但是它反映的是在x方向上的三个像素值差异很大,那么假设黑色图像中一条白色竖线(有10行1列),那么卷积后: 在白色竖线以外左边相邻的那一列,他的 ...

最新文章

  1. 利用正高Dolphin智能广告监测系统做好违法广告监测
  2. Markdown的一些常用的语法
  3. 上学路线 (Standard IO)
  4. [Oracle] Enable Row Movement
  5. Nagle算法延时确认
  6. linux查看openjdk的安装的路径
  7. python 单一继承定义_Python学习之单继承与多继承
  8. CCF NOI1024 因子个数
  9. 高速收发器之8B/10B编码
  10. linux waitpid子进程,关于waitpid()函数的问题,为什么最后子进程没退出来啊?...
  11. babel css3新特性_css3 transform属性多值的顺序问题
  12. ubuntu zip文件解压失败
  13. FC冒险岛java版_FC冒险岛全关卡版
  14. 【马克思主义基本原理】--导论
  15. 绕过apple id的那些事
  16. Java第11次作业
  17. CubieBoard6(S500,armhf)安装ROS过程
  18. 流量卡之家:AI、无人机、物联网、自动驾驶 未来取决于5G
  19. WAVE SUMMIT+峰会,飞桨八大亮点发布,全面助力产业智能化
  20. Git简明入土教程2.4万字-转自廖雪峰Git

热门文章

  1. 【机器视觉】 read_measure算子
  2. 【Linux系统编程】进程间通信概述
  3. 80端口攻击_内网端口转发工具的使用总结
  4. delphi7升级delphi2007可以互用马_莱万特 VS 马竞:西甲
  5. 【华科考研机试题】二叉树遍历(递归版 详细注释)
  6. LeetCode 437. Path Sum III (STL map前缀和)
  7. 每天一道LeetCode-----计算最长的元素连续序列长度
  8. muduo网络库学习(三)定时器TimerQueue的设计
  9. java3d 上色_Unity 着色过程
  10. mysql打平子表_solr初步学习