安卓仿苹果音量调节_android自定义view仿照MIUI中音量控制效果

先看效果图:

这就是miui中的音量效果图,实现思路是自定义视图,绘制圆环,然后设置进度显示。

核心代码在onDraw中实现如下:

@Override

protected void onDraw(Canvas canvas) {

float cx = getMeasuredWidth() / 2;

float cy = getMeasuredHeight() / 2;

r1 = cx - w1 / 2;

r2 = cx - w1 / 2 - w2 / 2;

r3 = cx - w1 / 2 - w2;

// 绘制外圆

paint.setStrokeWidth(w1);

paint.setColor(Color.parseColor("#454547"));

canvas.drawCircle(cx, cy, r1, paint);

// 绘制中间圆环

paint.setColor(Color.parseColor("#747476"));

paint.setStrokeWidth(w2);

canvas.drawCircle(cx, cy, r2, paint);

// 绘制内圆

paint.setColor(Color.parseColor("#464648"));

paint.setStyle(Style.FILL);

canvas.drawCircle(cx, cy, r3, paint);

// 绘制中间的图片

canvas.drawBitmap(bitmap, cx - bitmap.getWidth() / 2,

cx - bitmap.getHeight() / 2, paint);

// 绘制文本

paint.setColor(Color.WHITE);

paint.setStrokeWidth(0);

paint.setTextSize(40);

float textWidth = paint.measureText("铃声"); // 测量字体宽度,我们需要根据字体的宽度设置在圆环中间

canvas.drawText("铃声", cx - textWidth / 2, cx + bitmap.getHeight() / 2

+ 40, paint);

// 绘制进度

paint.setStyle(Style.STROKE);

paint.setStrokeWidth(w2);

paint.setColor(Color.WHITE);

RectF oval = new RectF(cx - r2, cy - r2, cx + r2, cy + r2); // 用于定义的圆弧的形状和大小的界限

canvas.drawArc(oval, 270, 360 * progress / 100, false, paint);

super.onDraw(canvas);

}

然后就是自定义toast,加载上面的自定义控件。

public class VolumnController {

Toast t;

VolumnView tv;

Context context;

public VolumnController(Context context) {

this.context = context;

}

public void show(float progress) {

if (t == null) {

t = new Toast(context);

View layout = LayoutInflater.from(context).inflate(R.layout.vv,

null);

tv = (VolumnView) layout.findViewById(R.id.volumnView1);

t.setView(layout);

t.setGravity(Gravity.BOTTOM, 0, 100);

t.setDuration(Toast.LENGTH_SHORT);

}

tv.setProgress(progress);

t.show();

}

}

最后附上所有的源码:点击我!!!

Android -- 自定义view实现keep欢迎页倒计时效果

1,最近打开keep的app的时候,发现它的欢迎页面的倒计时效果还不错,所以打算自己来写写,然后就有了这篇文章. 2,还是老规矩,先看一下我们今天实现的效果 相较于我们常见的倒计时,这次实现的效果是多 ...

Android自定义View——QQ音乐中圆形旋转碟子

1.在onMeasure中测量整个View的宽和高后,设置宽高 2.获取我们res的图片资源后,在ondraw方法中进行绘制圆形图片 3.通过Handler发送Runnable在主线程中更新UI,达到 ...

Android自定义View——简单实现边缘凹凸电子票效果

View继承LinearLayout,在View的上下边缘画出白色的圆形即可,这里只要计算出圆的个数和圆的循环规律即可,下面请看分析 我们取卡片的前2个凹凸来看,将其分为四部分,并且两部分为循 ...

Android自定义View——贝塞尔曲线实现水波纹效果

我们使用到的是Path类的quadTo(x1, y1, x2, y2)方法,属于二阶贝塞尔曲线,使用一张图来展示二阶贝塞尔曲线,这里的(x1,y1)是控制点,(x2,y2)是终止点,起始点默认是Pat ...

android自定义view系列:认识activity结构

标签: android 自定义view activity 开发中虽然我们调用Activity的setContentView(R.layout.activity_main)方法显示View视图,但是vi ...

Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

Android 自定义View及其在布局文件中的使用示例(二)

转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...

Android自定义View研究--View中的原点坐标和XML中布局自定义View时View触摸原点问题

这里只做个汇总~.~独一无二 文章出处:http://blog.csdn.net/djy1992/article/details/9715047 Android自定义View研究--View中的原点坐 ...

随机推荐

OCP考点实战演练01-备份恢复篇

本系列宗旨:真正掌握OCP考试中所考察的技能,坚决不做Paper OCP! 实验环境:RHEL 6.4 + Oracle 11.2.0.4 OCP考点实战演练01-备份恢复篇 1.数据库开启归档 2. ...

JavaScript使用自定义事件实现简单的模块化开发

WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有: UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我 ...

【转】SPDY协议

SPDY协议 - v3 原文:SPDY Protocol - Draft 3 翻译:邱鹏滔(QQ: 95350530,主页:www.fireflysource.com) 1 概述 HTTP协议的瓶颈在 ...

【java开发系列】—— struts2简单入门示例

前言 最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的. struts2其实就是为我们封装了servlet,简化了js ...

HDU 5968:异或密码(暴力)

http://acm.hdu.edu.cn/showproblem.php?pid=5968 题意:中文题意. 思路:一开始不会做,后来发现数据范围很小,而且那个数要是连续的,所以可能把所有情况枚举出 ...

Careercup - Google面试题 - 5735304249999360

2014-05-03 23:18 题目链接 原题: Insert a element in a sorted circular linked list 题目:题意简单明了,向一个有序的循环单向链表中插 ...

POJ 1185 状态压缩DP(转)

1. 为何状态压缩: 棋盘规模为n*m,且m≤10,如果用一个int表示一行上棋子的状态,足以表示m≤10所要求的范围.故想到用int s[num].至于开多大的数组,可以自己用DFS搜索试试看:也可 ...

codeforces703B

Mishka and trip CodeForces - 703B 小米什卡是一个伟大的旅行者,她访问了许多国家.在这次考虑去哪里旅行之后,她选择了XXX--这个美丽,但鲜为人知的北方国家. 以下是关 ...

搭建Hadoop2.7.1的分布式集群

Hadoop 2.7.1 (2015-7-6更新),hadoop的环境配置不是特别的复杂,但是确实有很多细节需要注意,不然会造成许多配置错误的情况.尽量保证一次配置正确防止反复修改. 网上教程有很多关 ...

Java—Math类和随机数类

一.Math类(主要封装算数运算的静态方法) 定义: Math是没有构造方法的. java语言中提供了一个执行数学基本运算的Math类,Math类包括常用的数学运算和一些数学函数.还提供了一些常用的常 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值