项目中有时候会用到虚线,怎么办?drawable下创建一个shape类型的xml文件绘制,然后引用到view的background下?如果用到虚线的地方很多呢?创建多个,分别引用?横向的还好说,竖向的呢?垂直的虚线,普通的创建是显示不出来的,如果需要,就要进行旋转等的操作。但是,还是那个问题,需要很多个怎么办?挨个创建?
完全没必要,写个自定义,对外暴露设置虚线属性的方法就行。源码如下:
最后的说明很重要!!!
最后的说明很重要!!!
最后的说明很重要!!!
效果图:
源码:
ImaginaryLineView
package com.chen.demo;import android.content.Context;import android.graphics.Canvas;import android.graphics.DashPathEffect;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PathEffect;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;public class ImaginaryLineView extends View { private Context ct; private Paint mPaint; private Path mPath; private PathEffect effects; private int width; private int height; private int defaultColor=0xffff0000; public ImaginaryLineView(Context context) { this(context, null); } public ImaginaryLineView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, -1); } public ImaginaryLineView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); ct = context; init(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); width = w; height = h; } private void init() { //初始化,并打开抗锯齿 mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(defaultColor); mPaint.setStrokeWidth(dip2px(ct, 1)); mPath = new Path(); //数组含义:里面最少要有2个值,值的个数必须是偶数个。偶数位(包含0),表示实线长度,奇数位表示断开的长度 effects = new DashPathEffect(new float[]{4, 2}, 0); } public void setLineAttribute(int color, float lineWidth,float[] f) { if (color == 0) { color = defaultColor; } if (lineWidth == 0) { lineWidth = 1; } if(f==null){ f=new float[]{4,2}; } effects = new DashPathEffect(f, 0); mPaint.setStrokeWidth(dip2px(ct, lineWidth)); mPaint.setColor(color); invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //定义起点 mPath.moveTo(0, 0); //定义终点 if(width>height){ //宽度比高度大,是横线 mPath.lineTo(width, 0); }else{ //竖线。(根据实际情况,这里不考虑宽高相等情况) mPath.lineTo(0, height); } mPaint.setPathEffect(effects); canvas.drawPath(mPath, mPaint); } private static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android自定义水平或垂直虚线效果
后端开发2023-05-31
Android中自定义水平进度条样式之黑色虚线
后端开发2022-06-06
Android自定义View实现水波纹效果
后端开发2023-05-30
Android自定义View实现水面上涨效果
后端开发2022-06-06
Android实现自定义华丽的水波纹效果
后端开发2022-06-06
Android 自定义view实现水波纹动画效果
后端开发2023-05-31
Android自定义View实现水波纹扩散效果
后端开发2024-04-02
Android自定义View实现折线图效果
后端开发2022-06-06
Android自定义view实现水波纹进度球效果
后端开发2022-06-06
Android自定义View 实现水波纹动画引导效果
后端开发2022-06-06
Android 自定义View实现芝麻分曲线图效果
后端开发2022-06-06
Android 通过自定义view实现水波纹效果案例详解
后端开发2024-04-02
Android自定义View实现竖直跑马灯效果案例解析
后端开发2022-06-06
Android自定义textview如何实现竖直滚动跑马灯效果
后端开发2023-05-31
Android自定义带水滴的进度条样式(带渐变色效果)
后端开发2022-06-06
Android编程使用自定义View实现水波进度效果示例
后端开发2023-05-31
Android之自定义View实现带4圆角或者2圆角的效果
后端开发2022-06-06
咦!没有更多了?去看看其它编程学习网 内容吧