Android 自绘控件

由于公司项目的需求,需要绘制一条竖直的间断线作为分割线。这个可坑了爹了,以前只搞过水平的间断线,只要通过shape也可以简单的画出来,但是千万记得把hardwareAccelerated给关了,不然水平的虚线还是会是实线,这个以前也是我趟过的一个坑。那咋办呢,找不到原生的解决方案,不就是一条简单的间断线嘛,还能难住我等程序猿?这个时候,首先联想到的就是自绘控件了。

自绘控件,顾名思义就是控件所展示的内容都是我们自己绘制上去的。所有的绘制操作就是在onDraw()方法里面进行的,当然我们的这个自定义控件都是View的直接子类。比如最常使用的TextView、ImageView就是View的直接子类,也可视作自绘控件,所有的绘图操作也都是在自己的onDraw()中,有兴趣的同学绘图可以去读读这些基本控件的源码。今天第一讲,我们也动手实现我们自己的控件。

直接上代码,比较简洁。

第一步,在attrs.xml中定义控件的属性

定义line_color这个属性主要就是为了控件兼容着想,可以随意定制化间断线的颜色。

第二步、定义DashLine的成员变量

第三步、在构造方法中初始化变量

第四步、绘图

第五步、布局使用

代码比较简洁,也有注释,就不多说了。看下成果

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-09-20 12:36:50

Android 自绘控件的相关文章

Android UI开发专题(四) View自绘控件

  很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制. 首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方

Android学习自定义View(三)——自绘控件和组合控件

MainActivity如下: package cc.testviewstudy3; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.app.Activity; /** * Demo描述: * 关于自定义View的学习(三) * * 自定义View的实现方式大概可以分为三种: * 自绘控件.组合控件.以及继承控件 * 在此Dem

Android UI开发 View自绘控件 分享_Android

很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制. 首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件 Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方法

Android UI开发 View自绘控件 分享

很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制. 首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件 Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方法

android实现图片验证码方法解析(自绘控件)

自绘控件的内容都是自己绘制出来的 大致流程如下: 1.定义一个类继承view 1.使用TypedArray初始化属性集合     在view的构造方法中 有一个AttributeSet的参数 很明显是用来保存控件属性信息的 我们也的确可以通过循环然后用键值对的方式获取信息 而TypedArray是用来简化我们的工作的 2.重写onMeasure 测量控件大小 3.重写onDraw 绘制控件 2.根据需求在attrs文件中自定义属性 declare-styleable 声明自定义属性可以自定义一个

Android编程实现控件不同状态文字显示不同颜色的方法_Android

本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法.分享给大家供大家参考,具体如下: 方式一: 第一要选择的控件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close_time_display" android:layout_marginRight="20

Android编程实现控件不同状态文字显示不同颜色的方法

本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法.分享给大家供大家参考,具体如下: 方式一: 第一要选择的控件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close_time_display" android:layout_marginRight="20

Android常用布局控件之RelativeLayout

我们使用LinearLayout和TableLayout可以满足开发应用程序界面基本的要求 .但是有时候实现界面的时候不够灵活,我们还可以使用另外一种控件 RelativeLayout.RelativeLayout是一种相对布局的控件,这个容器内部的子元 素们可以使用彼此之间的相对位置或者和容器间的相对位置来进行定位,类似于 网页设计中的CSS.在指定控件的位置时,我们需要指定这个控件与其它控件之 间的相对位置关系,比如说与另一个控件的左边对齐,右对齐,位于另一个控件 的上方,下方等等.一个控件

Android常见布局控件之LinearLayout和TableLayout

一.LinearLayout布局控件 xml属性 android:baselineAligned:是否允许用户调整它内容的基线. android:baselineAlignedChildIndex:当一个线性布局与另一个布局是按基 线对齐的一部分,它可以指定其内容的基线对齐方式. android:gravity:指定控件中内容的基本内容. android:orientation:设置它内容的对其方向,有两个可以选择的值: horizontal和vertical.分别表示水平排列和垂直排列. Li