shape制作出来的虚线
shape实线
如果要实现肯定会有人说这个简单用view也可以啊我把它的height设置成1dp在给个背景颜色不就可以了吗,说的确实很有道理我也这样做过要是用shape呢?
shape其实就是在drawable下面新建xml文件并且可以实现一些形状的图形,或者是颜色减半的效果,它相比PNG图片占用的空间更小也比 自定义View实现的更简单。
1
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--shape:表示是线条-->
<!--width:表示是线段的高度-->
<!--dashGap:表示线段与线段之间间隔-->
<!--dashWidth:表示线段的宽度-->
<stroke
android:width="1dp"
android:dashGap="5dp"
android:dashWidth="5dp" />
<!--angle 渐变角度,0:左到右;90:下到上;180:右到左;270:上到下-->
<gradient
android:startColor="#ff6677"
android:endColor="@android:color/white"
android:angle="0"></gradient>
</shape>
shape 这个属性来设置你要设置的边框形状:rectangle 矩形(默认)
line:线条
ring: 环形
oval:椭圆
corners标签
<!--corners标签: 圆角-->
<!--bottomLeftRadius 左下角-->
<!--bottomRightRadius 右下角-->
<!--topLeftRadius 左上角-->
<!--topRightRadius 右上角-->
<!--radius 是四个角, 设置了这个就不需要设置上面的四个了, PS:它的优先级比较低, 会被其他参数覆盖-->
gradient标签
<!--gradient标签: 简单的说: 让图形变成一个有颜色梯度的-->
<!--angle 是颜色变换的角度, 默认是0, 取值必须是45的 倍数. 0: 是颜色从左边到右边, 90: 是颜色从底部到顶部, -->
<!--startColor centerColor endColor 一起使用: 开始的颜色, 中间的颜色, 结束的颜色-->
<!--centerX centerY是指定位置坐标, 取值是0.0f ~ 1.0f 之间, 例如: android:centerX="0.5f" 表示X方向的中间位置-->
<!--type 颜色渐变的类型, 取值类型有三种: linear/radial/sweep -->
<!--linear 线性变化, 就是颜色从左往右, 从下往上-->
<!--radial 放射变化, 例如: 从一个圆中心到圆的边缘变化-->
<!--sweep 扫描式渐变, 类似雷达扫描的那种图形-->
<!--gradientRadius 和android:type="radial"一起连用, 半径-->
padding标签
<!--padding标签: 这里的padding是控件中间内容与shape图形图片的距离-->
shape虚线:
如果是用shape来实现虚线的话也比较简单:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<!--shape:表示是线条-->
<!--width:表示是线段的高度-->
<!--dashGap:表示线段与线段之间间隔-->
<!--dashWidth:表示线段的宽度-->
<stroke
android:width="1dp"
android:color="#ff6677"
android:dashGap="5dp"
android:dashWidth="5dp" />
</shape>
但是有几个地方我们得搞清楚像:width其实表示的是虚线的宽度 dashGap 表示的是线段与线段之间的间隔 而dashwidth表示的是线段之间的宽度,当然重中之重就是 android:layerType=”software”一定要在你使用虚线的地方加上。
竖直的虚线
如果谁前两个用shape很好设置的话这个如果是shape就会有问题了由于宽和高的不确定性导致你 用shape来设置的时候就会对它边上的布局有影响这里就必须得自定义View来实现了:
public class JDottedLine extends View {
private Paint mDotPaint;
public JDottedLine(Context context) {
super(context);
initView();
}
public JDottedLine(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView();
}
public JDottedLine(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
private void initView() {
mDotPaint = new Paint();
mDotPaint.setColor(Color.parseColor("#FF6677")); //画笔颜色
mDotPaint.setStrokeWidth(2); //画笔宽度
// 1、STROKE 描边
// 2、FILL_AND_STROKE 填充内部和描边
// 3、FILL:填充内部
mDotPaint.setStyle(Paint.Style.STROKE);
//1、Cap.BUTT 这条路径结束,而不是超越它。
//2、Cap.ROUND 结束是个半圆
//3、Cap.SQUARE 结束是个方形
mDotPaint.setStrokeCap(Paint.Cap.ROUND);//
//设置抗锯齿
mDotPaint.setAntiAlias(true);
//设置是否抖动
mDotPaint.setDither(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float startY = getHeight();
float startX = getWidth() / 2;
DashPathEffect dashPathEffect =
new DashPathEffect(new float[]{8, 10, 8, 10}, 0);
mDotPaint.setPathEffect(dashPathEffect);
Path path = new Path();
path.moveTo(startX,0);
path.lineTo(startX,startY);
canvas.drawPath(path,mDotPaint);
}
}
到这 基本上我们想要的几种效果就实现了我们只需要加一下background
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!--当画一个高度为1dp的虚线实际上他占的高度是大于1dp-->
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layerType="software"
android:background="@drawable/one" />
<!--如果现在要去画一条颜色渐变的虚线-->
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layerType="software"
android:background="@drawable/two" />
<!--画竖直线-->
<testview.bawei.com.ceshi.JDottedLine
android:layout_marginLeft="100dp"
android:layout_marginTop="20dp"
android:layout_width="2dp"
android:layout_height="60dp" />
</LinearLayout>
https://blog.csdn.net/ln_zoofa/article/details/61199244
https://blog.csdn.net/qiaoshi96_bk/article/details/79333309
shape制作出来的虚线相关推荐
- android 自定义圆形图片素材,Android 使用shape制作drawable素材
Android开发中,资源文件中会有大量的图片素材文件,这样会额外增加APP的大小,有时面对对APP 大小有限制的,那就要考虑尽可能的对图片进行压缩处理或者减少资源文件中图片的数量,那么减少了资源素材 ...
- 第2章第12节:标题设计技巧:制作漂亮的虚线描边文字 [PowerPoint精美幻灯片实战教程]
本节演示如何利用形状的轮廓属性,制作漂亮的虚线描边文字.首先选择需要描边的文字. 接着来修改文字的颜色. 由于背景图像中有大量的橙色,所以将标题文字设置为橙色,能够和背景很好的融合. 现在给文字进行描 ...
- android 设置单边框,详解Android用Shape制作单边框图的两种思路和坑
开发中遇到单/多边框的UI,简单的可以自己写shape图,复杂的一般都让设计配合制作9patch图了. 今天不说需要切图的情况,只聊简单的单/多边框,主要是实现思路. 效果很简单: 就以上图为例介绍, ...
- mac 个人网站收藏(一)
H5实现视频直播 HTML5 视频直播(二) HTML5 视频直播那些事儿 亲加云 声网 野狗 app实现摄像头视频展示 需要服务器 Android实时直播,一千行java搞定不依赖jni,延迟0.8 ...
- Android 使用shape实现虚线或者虚线框
画一条虚线作为分割线 1.先写一个shape,命名为shape_line_dash.xml 虚线 ?xml version="1.0" encoding="utf-8&q ...
- android shape画虚线
横着的虚线 <View android:layout_width="match_parent" android:layout_height="@dimen/base ...
- web设计和制作中虚线的实现
在设计和制作网页过程中,常常需要加入虚线分割线,像腾讯.搜狐.新浪首页都有灰色虚线的应用.但是虚线的实现,无论在设计中还是后面的制作中都不太容易. (一)设计中实现虚线 总结以下photos ...
- android shape 无边框颜色,Android 使用shape定义不同控件的的颜色、背景色、边框色...
Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...
- 【第二季】Arcgis地图制图基础|(一)Arcgis地图符号制作
写在前面的话: B站搜索"中图地信"便可观看全套71章节详细操作视频(有操作数据获取,同步学习) (一)银行.地铁等约定俗成符号的制作 下面以地铁符号为例,介绍单色和多色约定俗成符 ...
最新文章
- 一条简单的更新语句,MySQL是如何加锁的?
- 开发日记-20190501 关键词 汇编语言(启动) 基于x86处理器
- DeepMind详解新WaveNet:比原来快千倍,语音更自然 | 附论文
- 蓝桥杯-2的次幂表示(java)
- 销售科目确认相关配置
- WPF Slider Menu
- go get国内解决办法汇总
- 基于Go实现的秒杀系统
- matplotlib绘制K线图
- png 微软ppt 透明度_花了8+小时,做了4页禅宗PPT定制!
- 限制页面被pc端访问
- 大约ActionContext.getContext()使用体验
- jar包转换为exe可执行文件
- snort源码分析 linux,Linux系统Snort 编译
- Loongson2f_龙芯逸珑8089A_扩容硬盘安装debian8(sd卡扩容)
- 关于 类的常成员函数 声明和定义处 都需要加 const的原因
- 软件测试——三角形问题测试用例练习
- 4000块一晚,住进地下88米深坑,这是全国首家AI超五星酒店
- metasploit meterpreter介绍
- 和数传媒:公链私链联盟链有啥区别?
热门文章
- 单招计算机面试技巧和注意事项,单招面试技巧和注意事项
- 神经网络类型介绍 ANN FNN RNN LSTM GAN DQN
- 【目标跟踪】基于迭代扩展卡尔曼滤波算法实现目标滤波跟踪(IEKF)附Matlab代码
- 麦克斯韦方程组在电力传动领域的应用(1)
- linux添加删除虚拟ip,Linux增加/删除虚拟ip
- oracle中正则表达式规则,Oracle SQL 正则表达式
- :aria-checked_动手使用ARIA:首页元素和标准导航
- 按键判断之GetKeyState 和 GetAsyncKeyState 区别
- photoswipe 移动端PC端兼容图片相册预览
- S7-200SMART PLC中书签和交叉引用的具体使用方法示例