Android客户端自定义UI笔记|青训营笔记

132 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的第十四天。这篇笔记主要是对安卓客户端常规&高级UI编程”这节课中自定义UI相关部分的记录。


笔记

自定义UI

自定义View示例-创建View

  • 多个构造器
  • 自定义属性
  • 获取自定义属性
构造器应用场景
1个参数Java代码中创建View
2个参数通过XML声明创建View
3个参数通过XML声明创建View + Style
4个参数通过XML声明创建View + Style + Theme

自定义View示例-处理View布局

  • View的测量,按需复写onMeasure方法
  • View的布局,按需复写onLayout方法
  • 可利用requestLayout()触发View重布局
复写方法应用场景
onMeasure一般需要复写宽高设置为wrap_content场景、以及组件宽高有比例限制
onLayout继承自ViewGroup时必须复写,继承自View时一般不用
onSizeChanged视图大小发生改变时调用

自定义View示例-绘制View

  • View的绘制,按需复写onDraw方法
  • 利用Canvas和Paint来绘制Wiew
  • 可利用invalidate()/postInvalidate()触发View重绘
核心类核心方法相应功能
PaintsetStyle设置绘制模式
PaintsetColor设置颜色
PaintsetStrokeWidth设置线条宽度
PaintsetTextSize设置文字大小
PaintsetAntiAlias设置抗锯齿开关
CanvasdrawCircle绘制圆形
CanvasdrawRect绘制矩形
CanvasdrawRoundRect绘制圆角矩形
CanvasdrawBitmap绘制图片
CanvasdrawLine绘制线条

自定义View示例-处理用户交互

  • 获取响应事件,按需复写onTouchEvent方法
  • 根据MotionEvent处理相应的交互事件
  • 必要时通过复写onInterceptTouchEvent来拦截事件
  • 必要时通过复写dispatchTouchEvent来分发事件
交互事件操作逻辑
ACTION_DOWN设置操作状态
ACTION_MOVE处理拖拽,触发UI更新
ACTION_UP处理开关状态,播放动画
ACTION_CANCEL复位操作状态

自定义View示例-处理动画

  • 根据动画需要选择合适的动画类型
  • 按需启动动画、适时停止动画
  • 可利用AnimatorListener来监听动画
  1. 设置属性动画,同时添加监听器
  2. 在动画监听器中,根据属性值更新UI状态值,并触发UI绘制。

总结

通过本节课的学习,我们可以根据自己喜欢的方式来定义自己喜欢的UI,而脱离了原有模板的限制,从而绘制出独属于自己的、个性化的UI。