在Android屏幕中绘制虚线,最通用的是自定义控件DashedLine,再将自定义控件放入xml布局中

运行截图:

程序结构

package com.example.asus.gary_042;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;/*** Created by ASUS on 2018/5/26.*/public class DashedLine extends View{public DashedLine(Context context,AttributeSet attrs) {super(context,attrs);}protected void onDraw(Canvas canvas){super.onDraw(canvas);Paint paint = new Paint();paint.setStyle(Paint.Style.STROKE);paint.setColor(Color.BLACK);Path path = new Path();path.moveTo(0,200);path.lineTo(1280,200);PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);paint.setPathEffect(effects);canvas.drawPath(path,paint);}
}

DashedLine

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.asus.gary_042.MainActivity"><com.example.asus.gary_042.DashedLineandroid:id="@+id/dashedLine"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

activity_main.xml

一、自定义控件DashedLine,使用这个控件能在屏幕中绘制一条虚线

   protected void onDraw(Canvas canvas){super.onDraw(canvas);Paint paint = new Paint();//给path设置样式(效果)的,STORKE设置虚线
         paint.setStyle(Paint.Style.STROKE);//设置虚线颜色
        paint.setColor(Color.BLACK);Path path = new Path();//起点path.moveTo(0,200);//终点path.lineTo(1280,200);//那么虚线的一个单位就是由5像素实线,5像素空白,5像素实线,5像素空白组成的虚线段。PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);//将样式放入直线中
        paint.setPathEffect(effects);canvas.drawPath(path,paint);}

canvas.drawPath方法:传送门

Path类包含了由直线、二次曲线、三次曲线组成多种符合的集合路径图形,它可以用canvas.drawPath()来绘制,并且可以使填充的或者描边的(是基于paint的style的),并且它可以用于裁剪或者在一条path上面绘制文本。

Canvas只有drawLine方法,没有drawDashLine方法。但是你要知道,画什么虽然是Canvas决定的,但是怎么画却是由画笔Paint决定的

Paint有setPathEffect(PathEffect effect)这么一个方法,PathEffect一共有六个子类:传送门
ComposePathEffect,
CornerPathEffect,
DashPathEffect,
DiscretePathEffect,
PathDashPathEffect,
SumPathEffect,
其中的DashPathEffect就是我们需要的虚线效果

二、在activity_main文件中引入自定义控件DashedLine

添加引用该自定义空间所在位置的绝对路径
<com.example.asus.gary_042.DashedLine>
 <com.example.asus.gary_042.DashedLineandroid:id="@+id/dashedLine"android:layout_width="match_parent"android:layout_height="match_parent" />

转载于:https://www.cnblogs.com/1138720556Gary/p/9094819.html

Android_(控件)使用自定义控件在屏幕中绘制一条虚线相关推荐

  1. C++ 主程序中打开子程序窗口隐藏,操作控件 遍历窗口控件句柄EnumChildWindows();获取其他程序进度条数据 操作选择框 按钮点击

    1.线程启动子程序  ShowWindow(hWnd, SW_SHOW)显示 ShowWindow(hwnd, SW_HIDE);隐藏 system_hide(L"Odin3.exe&quo ...

  2. dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件

    DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件,它和我们传统Winform的TreeView控件使用上有所不同,我一 ...

  3. 安卓-控制控件的宽度占屏幕的一半且水平居中显示

    今天说下如何让一个控件的宽度显示时占屏幕的一般宽度,且水平居中显示.这里抛砖引玉,给出三种实现方案: 1)线性布局:利用属性android:weightSum和android:layout_weigh ...

  4. 用户控件和自定义控件

    关 键 词 Server Control 服务器控件 User Control 用户控件,ASP.NET服务器控件的一种(一般后缀名为.ASCX文件) Custom Control 自定义控件,ASP ...

  5. android 绘制控件,Android自定义控件绘制基本图形基础入门

    本文讲述绘制Android自定义各种图形效果,为自定义控件的入门篇 相关视频链接: 绘制点–这个控件只需要在布局中引用或者代码中new 即可,下面几个绘制只展示onDraw方法 package com ...

  6. 可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) ....

    可视化webpart基础开发--TreeView控件读取文档库中的所有文件夹和文件(递归方法读取) 作者:miragesky2049 原文地址:http://blog.csdn.net/mirages ...

  7. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...

  8. 添加Aforge控件,报错“在.....中没有可放置在工具箱上的控件”

    添加Aforge控件,报错"在-中没有可放置在工具箱上的控件" 1.先添加AForge系列引用 工具–>NuGet包管理器–>管理解决方案的NuGet程序包 之后,打开 ...

  9. C# .NET 6.0已经取消了Framework 4.8的WebBrowser控件,几款NuGet中的浏览器控件介绍

    即使在C# .NET 6.0..NET 7.0在选择工具箱项COM组件添加Microsoft Web Browser,工具箱也没有WebBrowser控件. WebBrowser控件: WebBrow ...

最新文章

  1. ibtmp1文件过大
  2. PHP 端口号 是否 被占用 以及 解决方法
  3. TSS描述符表的作用
  4. ArrayList和LinkedList类的用法及区别
  5. Eclipse+Maven创建webapp项目二 (转)
  6. 为什么 Flink 无法实时写入 MySQL?
  7. Linux安全模块(LSM)
  8. vue 点击按钮改变颜色
  9. 《把时间当做朋友》读书摘记
  10. 今日科技联播:饿了么与屈臣氏达成合作;iPhone XR需求旺盛
  11. 微信公众号开发:获取openId和用户信息(完整版)
  12. 给新程序员的10条建议
  13. 虚幻4地形怎么增加层_怎么快速实现住房自由?学学这位95后小哥哥,花70万自建4层别墅...
  14. 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索
  15. Windows 安装MySQL 8.0 超详细教程(mysql 8.0.30)
  16. android studio int转,Android Studio Flavors的妙用(转)
  17. 360浏览器拦截弹窗,window.open方式打不开新页面(js操作新开页面)
  18. xbox360游戏下载_完成的乐趣-通过Xbox向后兼容性探索旧游戏
  19. c# AE GIS二次开发学习专题(二) 基本地图控件使用
  20. 几个机器翻译与自动文摘评价指标

热门文章

  1. NOIP模拟 color(DP)
  2. Hibernate框架之HQL查询与Criteria 查询的区别
  3. 定义表格的指定列的属性
  4. 一起学Windows Phone 7开发(九.Windows Phone Developer Tools Beta)
  5. YUI3学习笔记 ( 8 )
  6. html弹出层全覆盖滚动条,JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
  7. mysql tuning primer_mysql检测工具tuning-primer.sh
  8. TopicDeletionManager分析
  9. (213)initial是否可综合?
  10. 口译比赛用计算机,[079][连载]口译与生活:一枚计算机系在校生在口译路上的摸爬滚打(15)...