UI组件——SwipeRefreshLayout学习笔记

  • mStrokeInset:
    表示让RectF向上下、左右的增加或减少量,arcBounds.inset(mStrokeInset, mStrokeInset);,mStrokeInset>0是减小,mStrokeInset<0是放大,其值为:
if (mRingCenterRadius <= 0 || minEdge < 0) {
  /*Math.ceil测试:表示大于或等于参数的最小值
 var aa = Math.ceil(-10.9)
    println("aa是$aa")
    如果<0,mStrokeInset就是画笔宽度的二分之一,而minEdge 就是这个Drawable宽高中的较小者,为什么要加小于零的判断呢?
*/
insets = (float) Math.ceil(mStrokeWidth / 2.0f);
} else {
//如果大于零,insets 就是矩形的宽高的较小者除以2减去圆环的半径
insets = (float) (minEdge / 2.0f - mRingCenterRadius);
}
mStrokeInset = insets;
  • 圆的半径以及画笔的宽度
    这个控件实际上是由圆环和三角形拼接起来的,那么该怎么移动三角形使之与圆环实现无缝结合就是关键了,先看一下当画一个圆环时,它的起始角度为0,偏移角度为1的时候是什么样的,入下图所示:
    这里写图片描述
    就是图中红线的位置,这就是起始位置,要想把画好的三角形移动到这个位置,那么该偏移多少呢,y轴很简单,偏移内切矩形圆的半径即可(bounds.exactCenterY()),那么x轴呢?理论上来讲是一个内切矩形圆的半径+圆环的半径是正确的,但是别忘了,这个矩形也做过放缩(arcBounds.inset(mStrokeInset, mStrokeInset)),那么我们在原来的基础上再减去mStrokeInset/2就对了;另一个需要清楚的问题,如下图所示:
    这里写图片描述
    假如红色圆环表示的是画笔的宽度,而那条灰色的线就表示圆环的半径和画笔宽度的关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值