Android 自定义view 小细节处理
来源:互联网 发布:域名续费期可以过户吗 编辑:程序博客网 时间:2024/06/10 04:41
Android 自定义view 小细节处理
俗话说的好:好记性不如烂笔头啊。的确如此,在这么多年的开发中,有些东西一直记,有些东西也在一直忘。需要反复的去看,去理解。但是当你会过头来的时候,会发现,你又会对以前的东西有些认知,不仅会带你回忆当时为什么会这样想的,而且,还会对你现在的思维架构产生影响,所以很多人写博客,不光是为了给别人分享,而且还有对自己的共勉,小弟不才,文章写的不好,有些思维逻辑性跳跃大的话,还请见谅。
Android中自定义View,一般都是重写几个重要的方法,比如:
onDraw()
onMeasure()
onLayout()
Layout()
今天咱们说一下在onDraw 中的一些细节。
在onDraw 一开始的时候,整个屏幕都是画布,而且在最左上方,是画布的一个原点,坐标为(0,0),向右是x轴,为正轴,向下是y轴,为正轴,如果此时调用了 canvas.traslate(x,y)
方法,是移动的画布的一个坐标系,并不是移动的整个画布,举一个例子:我在画布上画了个弧度,然后此时调用canvas.traslate(x,y)
方法,原来弧度的位置是不会再变了,下次画笔的起始位置就是移动后的位置,看图说话。
移动之前的位置
然后我修改了代码 在画完内圆的时候,移动了画布的坐标系,xy分别为10
移动之后的位置
所以总结
画布移动的是坐标系。可以参考下 canvas变换与操作
讲的比较乱,既然说了移动的是坐标系,那咱们再来说下坐标系的问题。
这个主要体现在画弧度的时候
RectF rectF = new RectF(-radius, -radius, radius, radius); //画弧度 canvas.drawArc(rectF, startAngle, sweepAngle, false, paint);
startAngle 起始角度,sweepAngle 是扫过的简单,sweepAngle>0的话为顺时针旋转,小于0为逆时针旋转。大家估计要问了 0度在哪个位置?我这不会画图 就口述吧。0度的位置其实和数学系中的坐标一样的,只不过
在常见的数学坐标系中角度增大方向为逆时针,
在默认的屏幕坐标系中角度增大方向为顺时针
参考文章安卓自定义View基础-角度与弧度
这一篇写的不错,专门介绍了角度和弧度之间的关系
先写到这里吧,谢谢 !
这才发现原来写博客是件不容易的问题啊。
- Android 自定义view 小细节处理
- 自定义View之小细节
- Android 自定义View属性相关细节总结
- Android 自定义View属性相关细节
- 转载Android 自定义View属性相关细节
- Android 自定义View属性相关细节
- Android 自定义View属性相关细节
- Android自定义View的一些不知道的细节
- Android小白自定义View第一篇
- Android小白自定义View第二篇
- Android小白自定义View第三篇
- Android 自定义View-旋转小按钮
- Android 关于自定义View小知识
- android自定义view小圆球指哪跑哪
- Android 自定义 View 之处理 TouchEvent
- 自定义View 细节点记录
- Android小白进阶(三)--自定义控件之自定义View
- 自定义View中我们比较容易忽视的一些小细节
- Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function
- 面向对象编程的五大原则例子分析
- 下载excel模板
- 支付宝集成
- DA14580 --- adc
- Android 自定义view 小细节处理
- PHP设计模式系列 - 观察者模式
- Apache Solr vs Elasticsearch-feature
- Set、List及Map的基础用法
- 获取服务器微信头像更改不同规格图片大小
- UVa 11389 The Bus Driver Problem
- 通知/代理,
- [bsoj1331] 工厂的烦恼
- Python连接数据库的几种方式