Android 自绘控件
由于公司项目的需求,需要绘制一条竖直的间断线作为分割线。这个可坑了爹了,以前只搞过水平的间断线,只要通过shape也可以简单的画出来,但是千万记得把hardwareAccelerated给关了,不然水平的虚线还是会是实线,这个以前也是我趟过的一个坑。那咋办呢,找不到原生的解决方案,不就是一条简单的间断线嘛,还能难住我等程序猿?这个时候,首先联想到的就是自绘控件了。
自绘控件,顾名思义就是控件所展示的内容都是我们自己绘制上去的。所有的绘制操作就是在onDraw()方法里面进行的,当然我们的这个自定义控件都是View的直接子类。比如最常使用的TextView、ImageView就是View的直接子类,也可视作自绘控件,所有的绘图操作也都是在自己的onDraw()中,有兴趣的同学绘图可以去读读这些基本控件的源码。今天第一讲,我们也动手实现我们自己的控件。
直接上代码,比较简洁。
第一步,在attrs.xml中定义控件的属性
定义line_color这个属性主要就是为了控件兼容着想,可以随意定制化间断线的颜色。
第二步、定义DashLine的成员变量
第三步、在构造方法中初始化变量
第四步、绘图
第五步、布局使用
代码比较简洁,也有注释,就不多说了。看下成果
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!
相关推荐
-
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 自绘控件
由于公司项目的需求,需要绘制一条竖直的间断线作为分割线.这个可坑了爹了,以前只搞过水平的间断线,只要通过shape也可以简单的画出来,但是千万记得把hardwareAccelerated给关了,不然水平的虚线还是会是实线,这个以前也是我趟过的一个坑.那咋办呢,找不到原生的解决方案,不就是一条简单的间断线嘛,还能难住我等程序猿?这个时候,首先联想到的就是自绘控件了. 自绘控件,顾名思义就是控件所展示的内容都是我们自己绘制上去的.所有的绘制操作就是在onDraw()方法里面进行的,当然我们的这个自定
-
Android编程实现控件不同状态文字显示不同颜色的方法
本文实例讲述了Android编程实现控件不同状态文字显示不同颜色的方法.分享给大家供大家参考,具体如下: 方式一: 第一要选择的控件 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/close_time_display" android:layout_marginRight="20
-
Android中Spinner控件之键值对用法实例分析
本文实例讲述了Android中Spinner控件之键值对用法.分享给大家供大家参考.具体如下: 一.字典表,用来存放键值对信息 package com.ljq.activity; import java.io.Serializable; @SuppressWarnings("serial") public class Dict implements Serializable { private Integer id; private String text; public Dict()
-
Android编程布局控件之AbsoluteLayout用法实例分析
本文实例讲述了Android编程布局控件之AbsoluteLayout用法.分享给大家供大家参考,具体如下: AbsoluteLayout是绝对布局管理器,指的是指定组件的左上角绝对坐标来指定组件的布局 <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
分享Android中ExpandableListView控件使用教程
本文采用一个Demo来展示Android中ExpandableListView控件的使用,如如何在组/子ListView中绑定数据源.直接上代码如下: 程序结构图: layout目录下的 main.xml 文件源码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
-
Android 代码写控件代替XML简单实例
Android 代码写控件代替XML简单实例 简单的一个Button控件的练习. 实现代码: Button btn = new Button(HandlerToActivity.this); LinearLayout.LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER_HORIZONTAL; param
-
Android编程之控件ListView使用方法
本文实例讲述了Android编程之控件ListView使用方法.分享给大家供大家参考.具体分析如下: 控件ListView是一个重要的控件,可以被用作用户列表等显示,下面进行它的操作测试. 下面代码实现了生成了一个ListView显示,并对每个条目的单击事件作出响应. 源代码: package com.list; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import an
-
Android实现EditText控件禁止输入内容的方法(附测试demo)
本文实例讲述了Android实现EditText控件禁止输入内容的方法.分享给大家供大家参考,具体如下: 问题: android如何实现EditText控件禁止往里面输入内容? 修改版解决方法: EditText editText = (EditText) findViewById(R.id.editText1); editText.setKeyListener(null); 看到这个问题大家可能有点奇怪了,EditText的功能不就是往上面写入内容吗? 再者,如果真要禁止输入文本,在布局文件中
随机推荐
- flex4.5中CSS选择器的应用小结
- JavaScript新增样式规则(推荐)
- java虚拟机指令dup详解
- JavaScript事件处理的方式(三种)
- phpMyadmin 用户权限中英对照
- JSP动态网站开发环境配置详细方法第1/2页
- JSP教程(四)-JSP Actions的使用
- MySQL入门教程(五)之表的创建、修改和删除
- 浅谈java对象转json,数字精确出现丢失问题
- jQuery加密密码到cookie的实现代码
- Ruby中数组的一些相关使用方法
- CentOS实现将php和mysql命令加入到环境变量中的几种方法
- jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
- 微信小程序 modal详解及实例代码
- 浅析使用Python操作文件
- C语言中全局数组和局部数组的问题
- php4的彩蛋
- Oracle数据库恢复教程之resetlogs操作
- Python实现语音识别和语音合成功能
- golang 40行代码实现通用协程池