- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android自定义View(一、初体验自定义TextView)
Android自定义View(一、初体验自定义TextView)
对于一个Android攻城狮来说,自定义控件是一项必须掌握的重要技能点,然而对于大部分人而言,感觉自定义控件并不是那么容易。在工作过程中难免遇到一些特效需要自己定义控件实现,如果你不会,内心会有强烈的挫败感,这对一个程序员来说是决不能容忍的,接下来我将写一系列博客,和大家一起学习自定义控件,让她赤裸裸的站在我们的面前,让我们为所欲为… :joy:
言归正传,接触到一个类,你不太了解他,如果贸然翻阅源码只会让你失去方向,不知从哪里下手;所以我们应该从文档着手,看看它是个什么东西,里面有哪些属性和方法,都是用来干嘛的。下面我们看看官方文档对View的介绍:
View这个类代表用户界面组件的基本构建块。View在屏幕上占据一个矩形区域,并负责绘制和事件处理。View是用于创建交互式用户界面组件(按钮、文本等)的基础类。它的子类ViewGroup是所有布局的父类,它是一个可以包含其他view或者viewGroup并定义它们的布局属性的看不见的容器。
实现一个自定义View,你通常会覆盖一些framework层在所有view上调用的标准方法。你不需要重写所有这些方法。事实上,你可以只是重写onDraw(android.graphics.Canvas)。
从上面官方文档介绍我们可以知道,View是所有控件(包括ViewGroup)的父类,它里面有一些常见的方法(上表),如果我们要自定义View,最简单的只需要重写onDraw(android.graphics.Canvas)即可,听起来是不是很简单?那我们就动手自定义一个属于自己的TextView吧。
1. 继承View,重写onDraw方法
创建一个类MyTextView继承View,发现报错,因为要覆盖他的构造方法(因为View中没有参数为空的构造方法),View有四种形式的构造方法,其中四个参数的构造方法是API 21才出现,所以一般我们只需要重写其他三个构造方法即可。它们的参数不一样分别对应不同的创建方式,比如只有一个Context参数的构造方法通常是通过代码初始化控件时使用;而两个参数的构造方法通常对应布局文件中控件被映射成对象时调用(需要解析属性);通常我们让这两个构造方法最终调用三个参数的构造方法,然后在第三个构造方法中进行一些初始化操作。
public class MyView extends View {
/**
* 需要绘制的文字
*/
private String mText;
/**
* 文本的颜色
*/
private int mTextColor;
/**
* 文本的大小
*/
private int mTextSize;
/**
* 绘制时控制文本绘制的范围
*/
private Rect mBound;
private Paint mPaint;
public MyTextView(Context context) {
this(context, null);
}
public MyTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//初始化
mText = Udf32fA;
mTextColor = Color.BLACK;
mTextSize = 100;
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setColor(mTextColor);
//获得绘制文本的宽和高
mBound = new Rect();
mPaint.getTextBounds(mText, 0, mText.length(), mBound);
}
//API21
// public MyTextView(Context context, AttributeSet attrs, i
您可能关注的文档
- Altium技巧及快捷键.doc
- altium窗口菜单中英文对照表.doc
- amanda安装.docx
- Alvaro Siza.ppt
- amoeba_3.0.5安装配置手册.doc
- AMT-常用模板.ppt
- an-en-in课件.ppt
- analysis of linear regression.ppt
- Android Camera HAL3 分析.doc
- AMI理想再灌注治疗04-6.ppt
- 河南省郑州市第一中学2017-2018学年高一下学期周测物理试题(325)扫描版含答案.doc
- 山西省怀仁县第一中学2017-2018学年高二下学期第一次月考生物试题扫描版.doc
- 河南省六市高三下学期第一次联考试题(3月)理科综合扫描版含答案.doc
- 四川省高三全国Ⅲ卷冲刺演练(一)文综地理试卷扫描版含答案.doc
- 河南省洛阳市高三第二次统考文综试卷扫描版含答案.doc
- 甘肃省靖远县高三下学期第二次联考理科综合试题扫描版含答案.doc
- 问题导学法在办公场景中的实施策略及效果评估.docx
- 退休后的个人品牌打造与传播策略.docx
- 问题解决在办公流程优化中的应用.docx
- 问题导向的办公环境创新设计.docx
最近下载
- 2025年中国锯材木片加工市场全面调研及行业投资潜力预测报告.docx
- DCS控制系统应急预案.pdf VIP
- 廉政党课:牢记为民理财坚持廉洁从政 努力推动财政事业平稳发展.docx VIP
- 教师资格证小学科目二核心知识.pdf VIP
- 必威体育精装版部编版小学四年级下册道德与法治(道法)全册课件PPT - 精华版.pptx
- CAAC综合问答类考试复习题库及答案.docx
- 联勤保障部队第九四〇医院面向社会招聘93人招聘笔试备考题库及答案解析.docx VIP
- 《市政给排水管道工程》课件 项目三 市政排水管道工程概述.pptx VIP
- 跨学科主题——探索外来食料作物传播史.pptx
- 苏教版六年级下册数学期中试卷.pdf VIP
文档评论(0)