1.在res/values/目录下 新建文件 attrs.xml

<?
 xml
 
version
=
 "1.0"
 
encoding

"utf-8"
 ?>
<
 resources
>
 
    
<
declare-styleable 
name 
=
 "dashedline"
>
        
<
attr 
name 
=
 "lineColor"
 
format
=
 "color"
 
/>
    
</
declare-styleable 
>
 
</
 resources
>

 
2.创建自定义View,DashedLine.java

public
 
class 
DashedLine 
extends
 View {
           
private
 Paint 
paint
 = 
null
;
           
private
 Path 
path
 = 
null
;
           
private
 PathEffect 
pe
 = 
null
;
 
           
public
 DashedLine(Context paramContext) {
                    
this
(paramContext, 
null
);
          }
 
           
public
 DashedLine(Context paramContext, AttributeSet paramAttributeSet) {
                    
super
(paramContext, paramAttributeSet);
    
               
  //通过R.styleable.dashedline获得我们在attrs.xml中定义的
//<declare-
styleable 
name="
dashedline
"> 
TypedArray

                   TypedArray a = paramContext.obtainStyledAttributes(paramAttributeSet, R.styleable.
 dashedline
);
                    
//我们在attrs.xml中<declare-
styleable 
name="
dashedline
">节点下
//添加了<attr name="lineColor" format="color" />

                    
//表示这个属性名为lineColor类型为color。当用户在布局文件中对它有设定值时
                    
//可通过TypedArray获得它的值当用户无设置值是采用默认值0XFF00000

                    
int
 lineColor = a.getColor(R.styleable. 
dashedline_lineColor
, 0XFF000000);
                   a.recycle();
                    
this

paint
 = 
new
 Paint();
                    
this

path
 = 
new
 Path();
                    
this

paint
.setStyle(Paint.Style. 
STROKE
);
                    
this

paint
.setColor(lineColor);
                    
this

paint
.setAntiAlias( 
true
);
                    
this

paint
.setStrokeWidth(BitmapHelper. 
dip2px
(getContext(), 2.0F));
                    
float
[] arrayOfFloat = 
new
 
float
[4];
                   arrayOfFloat[0] = BitmapHelper. 
dip2px
(getContext(), 2.0F);
                   arrayOfFloat[1] = BitmapHelper. 
dip2px
(getContext(), 2.0F);
                   arrayOfFloat[2] = BitmapHelper. 
dip2px
(getContext(), 2.0F);
                   arrayOfFloat[3] = BitmapHelper. 
dip2px
(getContext(), 2.0F);
                    
this

pe
 = 
new
 DashPathEffect(arrayOfFloat, BitmapHelper.
dip2px
(getContext(), 1.0F));
          }
 
           
@Override
           
protected
 
void
 onDraw(Canvas canvas) {
                    
super
.onDraw(canvas);
                    
this

path
.moveTo(0.0F, 0.0F);
                    
this

path
.lineTo(getMeasuredWidth(), 0.0F);
                    
this

paint
.setPathEffect( 
this

pe
);
                   canvas.drawPath( 
this

path

this

paint
);
          }
 
}
3.新建布局文件dashedline.xml

<?
 xml
 
version
=
 "1.0"
 
encoding

"utf-8"
 ?>

<
 LinearLayout
 
xmlns:android

"http://schemas.android.com/apk/res/android"
    
xmlns:dash
=
 "http://schemas.android.com/apk/res/com.example.martixtest"
    
android:layout_width
=
 "fill_parent"
    
android:layout_height
=
 "fill_parent"
    
android:background
=
 "#eee"
    
android:orientation
=
 "vertical"
 
>
 
    
<
com.example.martixtest.myview.DashedLine
        
android:layout_width

"fill_parent"
        
android:layout_height

"1dip"
        
android:layout_margin

"10dip"
        
dash:lineColor

"#ff50f8"
 
/>
 
    
<
com.example.martixtest.myview.DashedLine
        
android:layout_width

"fill_parent"
        
android:layout_height

"1dip"
        
android:layout_margin

"10dip"
/>
 
    
<
com.example.martixtest.myview.DashedLine
        
android:layout_width

"fill_parent"
        
android:layout_height

"1dip"
        
android:layout_margin

"10dip"
        
dash:lineColor

"#f34f71"
 
/>
 
</
 LinearLayout
>
4.最终运行效果如下:






android自定义View---生成虚线的View的更多相关文章

  1. android自定义View_0——Create a custom view class

    一:创建一个自定义view的原则: 1.符合android的标准 2.能在layout的xml中定义控件属性 3.实现些新功能 4.要兼容android的大多数版本 二:定义一个view的子类 1.可 ...

  2. Android 自定义录音、播放动画View,让你的录音浪起来

    最近公司项目有一个录音的录制和播放动画需求,然后时间是那么紧,那么赶紧开撸. 先看效果图 嗯,然后大致就是这样,按住录音,然后有一个倒计时,最外层一个进度条,还有一个类似模拟声波的动画效果(其实中间的 ...

  3. Android 自定义 View 圆形进度条总结

    Android 自定义圆形进度条总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 微信公众号:牙锅子 源码:CircleProgress 文中如有纰漏,欢迎大家留言指出. 最近 ...

  4. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  5. [原] Android 自定义View步骤

    例子如下:Android 自定义View 密码框 例子 1 良好的自定义View 易用,标准,开放. 一个设计良好的自定义view和其他设计良好的类很像.封装了某个具有易用性接口的功能组合,这些功能能 ...

  6. Android自定义View

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  7. Android 自定义View (一)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  8. Android 自定义View之BounceProgressBar

    之前几天下载了很久没用了的桌面版酷狗来用用的时候,发现其中加载歌曲的等待进度条的效果不错(个人感觉),如下: 然后趁着这周末两天天气较冷,窝在宿舍放下成堆的操作系统作业(目测要抄一节多课的一堆堆文字了 ...

  9. Android自定义View和控件之一-定制属于自己的UI

    照例,拿来主义.我的学习是基于下面的三篇blog.前两是基本的流程,第三篇里有比较细致的绘制相关的属性.第4篇介绍了如何减少布局层次来提高效率. 1. 教你搞定Android自定义View 2. 教你 ...

随机推荐

  1. Springmvc 配置json输出的几种方式

    Spring MVC 3.0 返回JSON数据的几种方法: 1. 直接 PrintWriter 输出 2. 使用 JSP 视图 3. 使用Spring内置的支持 // Spring MVC 配置 &l ...

  2. JS判断字符串是否全为中文

    //第一种代码(全为中文则返回"true",不全为中文则返回"false"): <script language="javascript&quo ...

  3. PHP 9: 表达式

    原文:PHP 9: 表达式 本章介绍PHP的表达式.PHP的表达式其实和其他语言没有什么区别.普通的赋值是表达式,函数也是表达式,通过函数赋值也是.三元条件运算符也是,即: $first ? $sec ...

  4. openSUSE13.2安装Nodejs并更新到最新版

    软件源中直接安装Nodejs即可 sudo zypper in nodejs 查看nodejs版本 sincerefly@linux-utem:~> node --version v0.10.5 ...

  5. ExtJS4 自己定义基于配置的高级查询1

    今天在编码过程中遇到一个问题,临时还没解决,先记录下来 上面是我做的高级查询面板..字段名和值都是读取配置文件,依据用户选择不同的字段名,自己主动载入不同的值列表,关系是与或 问题来了,我在字段名那个 ...

  6. CodeIgniter学习一:基础知识

    1. url片段(CI域名组成说明)        example.com/index.php/test/index   第一部分(test):控制器 第二部分(index):方法,动作 如果第二部分 ...

  7. [原] 细说 NUMA

    详说 NUMA 标签(空格分隔): Cloud2.0 测试条件 两台机器: CPU: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz X 24 Intel(R) X ...

  8. JDK6、Oracle11g、Weblogic10 For Linux64Bit安装部署说明

    JDK6.Oracle11g.Weblogic10 For Linux64Bit安装部署说明 项目编号 编写人 成 编写日期 2013/07/29 审核 修订说明 目录 JDK6.ORACLE11G. ...

  9. Windows上memcached的使用

    Memcached是什么?Memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度. Memcached能缓存什 ...

  10. Javascript实例技巧精选(7)—设置和获取文本框与文本域的光标位置(兼容IE和Chrome,Firefox)

    >>点击这里下载完整html源码<< 截图如下: 本实例描述了如何用Javascript来控制和获取文本框/文本域的鼠标光标位置,以下代码兼容IE和Chrome,Firefox ...