自定义View实现空调遥控器切换度数

首先看下效果

简单描述下这篇文章需要用到的技术:

  1. View的测量
  2. Canvas绘图技巧
  3. 触摸事件的计算
  4. 接口回调

    整体思路

    1. 需要画两个圆弧一个是底部固定不变的另一个是更随手指移动渐变的圆弧
    2. 圆环上的分割线可以利用画布的旋转进行画线
    3. 文字的显示需要根据到圆心的距离进行计算。
    4. 根据手指滑动的x、y求当前滑动的范围的角度根据起始度数相加。

代码解读

  1. 画底部圆环
    使用drawArc(RectF oval,float startAngle, float sweepAngle, boolean useCenter, Paint paint)
    参数解读:
    oval:圆环外的矩形
    startAngle:开始角度
    sweepAngle:扫描角度
    useCenter:是否和圆心连线
    paint:画笔
    这里简单说下开始的0度角
    这里写图片描述
  mArcRectf = new RectF(mCenter - mRadius, mCenter - mRadius, mCenter + mRadius, mCenter + mRadius);   
   //画底部纯白色圆
  canvas.drawArc(mArcRectf, 135, 270, false, mArcPaint);

2.画带渐变色的圆,渐变色使用的是SweepGradient

 int[] colors = {
  0xFFE5BD7D, 0xFFFAAA64,
                0xFFFFFFFF, 0xFF6AE2FD,
                0xFF8CD0E5, 0xFFA3CBCB,
                0xFFBDC7B3, 0xFFD1C299, 0xFFE5BD7D,};
        //渐变色
        mSweepGradient = new SweepGradient(mCenter, mCenter, colors, null);
        // 设置画笔渐变色
        mArcPaint.setSha
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值