写点什么

自定义 View 笔记

用户头像
Changing Lin
关注
发布于: 3 小时前
自定义View笔记

1.尺寸单位转换

public static int dp2px(Context context, int dp) {		final float scale = context.getResources().getDisplayMetrics().density;		return (int) (dp * scale + 0.5f);}
public static float dp2px(float dp) { return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, Resources.getSystem().getDisplayMetrics());}
public static int px2dp(Context context, int px) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (px / scale + 0.5f);}
复制代码

2.绘制的基本要素

  • 重写 onDraw()

  • 使用 Canvas 来绘制

  • 使用 Paint 来配置

  • 坐标系

  • 尺寸单位是像素,而不是 dp(在 View 层,尺寸的单位已经变成 px)

3.基本方法

  • 使用您自己的类扩展现有 View 类或子类。

  • 替换父类中的某些方法。要替换的父类方法以“on”开头,例如 onDraw()、onMeasure() 和 onKeyDown()

  • 使用您的新扩展类。

4.其他

  • onDraw:该方法会传入一个 Canvas 参数,可以在其上实现所需的元素:2D 图形、其他标准或自定义组件、样式文本或其他任何东西。

  • onMeasure:组件与其容器之间的渲染约定的关键部分。组件的 onMeasure() 方法应计算渲染组件所需的测量宽度和高度。计算宽度和高度后,必须使用计算得出的测量值调用 setMeasuredDimension(int width, int height) 方法。


发布于: 3 小时前阅读数: 3
用户头像

Changing Lin

关注

获得机遇的手段远超于固有常规之上~ 2020.04.29 加入

我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。

评论

发布
暂无评论
自定义View笔记