下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中如何自定义View
前言/upload/information/20210522/379/528689.jpg思维导图/upload/information/20210522/379/528690.jpg工作流程@Override
protected
void
onMeasure(int
widthMeasureSpec,
int
heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec,
heightMeasureSpec);
//用于获取设定的模式
int
widthMode
=
MeasureSpec.getMode(widthMeasureSpec);
int
heightMode
=
MeasureSpec.getMode(heightMeasureSpec);
//
用于获取设定的长度
int
widthSize
=
MeasureSpec.getSize(widthMeasureSpec);
int
heightSize
=
MeasureSpec.getSize(heightMeasureSpec);
//
类似这样的判断,后面不过多复述
//
用于判断是不是wrap_content
//
如果不进行处理,效果会是match_parent
if(widthMode
==
MeasureSpec.AT_MOST
&&
heightMode
==
MeasureSpec.AT_MOST){
setMeasuredDimension(20,
20);
}
}/upload/information/20210522/379/528691.jpg/upload/information/20210522/379/528692.jpgdrawprivate
Paint
paint
=
new
Paint(Paint.ANTI_ALIAS_FLAG);
@Override
protected
void
onDraw(Canvas
canvas)
{
super.onDraw(canvas);
int
width
=
getWidth();
int
height
=
getHeight();
//
在画布上进行类似这样的操作
canvas.drawLine(0,
height/2,
width,height/2,
paint);
}入门自定义View<?xml
version="1.0"
encoding="utf-8"?>
<resources>
<declare-styleable
name="DefaultView">
<attr
name="color"
format="color"/>
</declare-styleable>
</resources>/**
*
author:
ClericYi
*
time:
2020-01-30
*/
public
class
DefaultView
extends
View
{
private
Paint
paint
=
new
Paint(Paint.ANTI_ALIAS_FLAG);
private
int
mColor
=
Color.RED;
public
DefaultView(Context
context,
@Nullable
AttributeSet
attrs)
{
super(context,
attrs);
initAttrs(context,
attrs);
initDraw();
}
private
void
initAttrs(Context
context,
@Nullable
AttributeSet
attrs)
{
TypedArray
array
=
context.obtainStyledAttributes(attrs,
R.styleable.DefaultView);
//
从styleable中获取的名字是系统会生成的,一般是
类名_name
的形式
mColor
=
array.getColor(R.styleable.DefaultView_color,
Color.GREEN);
//
获取完资源后即使回收
array.recycle();
}
private
void
initDraw()
{
paint.setColor(mColor);
paint.setStrokeWidth(3f);
}
@Override
protected
void
onDraw(Canvas
canvas)
{
super.onDraw(canvas);
int
width
=
getWidth();
int
height
=
getHeight();
canvas.drawLine(0,
height/2,
width,height/2,
paint);
}
@Override
protected
void
onMeasure(int
widthMeasureSpec,
int
heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec,
heightMeasureSpec);
int
widthMode
=
MeasureSpec.getMode(widthMeasureSpec);
int
heightMode
=
MeasureSpec.getMode(heightMeasureSpec);
int
widthSize
=
MeasureSpec.getSize(widthMeasureSpec);
int
heightSize
=
MeasureSpec.getSize(heightMeasureSpec);
if(widthMode
==
MeasureSpec.AT_MOST){
setMeasuredDimension(20,
20);
}
}
}基础的性能优化/upload/information/20210522/379/528693.png/upload/information/20210522/379/528694.jpg那如何做到性能优化呢?方案1:减少嵌套层数。/upload/information/20210522/379/528695.png方案2:去除默认的背景/upload/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度赞助合同2篇
- 2024年度市场调查与咨询服务合同2篇
- 2024学校活动场地租赁协议
- 上海市奉贤区2024-2025学年八年级上学期期中英语试题(解析版)
- 2024合伙开店合同
- 江南大学《发酵工程原理与技术》2023-2024学年第一学期期末试卷
- 佳木斯大学《运动生理学》2021-2022学年第一学期期末试卷
- 2024年企业环境保护与污染治理合同
- 2024年债务担保协议标准范本版B版
- 暨南大学《自然辩证法概论》2021-2022学年第一学期期末试卷
- 港口危险货物集装箱堆场安全操作要点
- 英法美德四国政治制度对比表
- 医院护理培训课件:《青盲(视神经萎缩)中医护理方案》
- 伤害监测报告流程图
- 路基分层-表格-
- 小数乘除法四则混合运算含简算专项练习(6套)
- 生产设备清洁验证风险评估报告-副本
- 电力系统经济学原理(全套课件)
- 通信传输系统课件
- 幼儿园PPT课件之大班数学《买水果》
- 老年性阴道炎的科普知识PPT
评论
0/150
提交评论