• android自定义View---生成虚线的View


    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.最终运行效果如下:







  • 相关阅读:
    权值线段树&&可持久化线段树&&主席树
    扩展中国剩余定理(EXCRT)快速入门
    jquery学习记录
    隐藏vbs执行cmd命令的窗口
    eclipse打开出错 Error: opening registry key 'SoftwareJavaSoftJava Runtime Environment'
    正则表达式学习总结
    什么是xss攻击?
    什么是浏览器的同源策略?
    关于axios的封装
    关于递归。
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3201429.html
Copyright © 2020-2023  润新知