ColorButton 的实现
来源:互联网 发布:怎么在mac上玩dota2 编辑:程序博客网 时间:2024/05/29 04:36
ColorButton 的实现
作者: 刘鹏
日期: 2010-03-12
本文总结了 Android 自带 Calculator 程序中 ColorButton 的实现方法。
简介
Android 平台自带了一个计算器程序(Calculator), UI 做的非常漂亮美观,如 下图所示。
Calculator 程序在 Calculator 的 UI 中,按钮的表现非常有特色,简洁、大方,既有立体感, 还带一些动画效果,这里我们分析这些特效的实现。参考 Calculator 的源码,我们称这些按钮是 Color Button。实现原理
普通状态下的按钮
按钮由两部分组成:一是黑色背景;二是一个透明背景的圆,圆内侧有一块白斑, 为按钮带来立体感。如下图所示:
normal color button按钮按下特效
按钮按下时变成带渐变效果的红色,该效果用一带渐变效果的底图跟前景色红色按 PorterDuff 中的 SRC_IN 模式进行组合得到,如下图所示:
clicked button
动画的实现
按下按钮后抬起鼠标,按钮有个红色图案旋转的特效,实现思路有如下几点:
- 设置一个标志表示动画是否在运行
- 在 onDraw 函数中调用 postInvalidDelayed 函数持续刷新屏幕
- 每次刷新屏幕时(可以称之为一帧)根据动画已运行的时间动态改变 alpha 值并旋转底图。
代码如下
我对其中的几点疑惑,希望有人能回答:
1. mButtonBackground.setColorFilter(color, PorterDuff.Mode.SRC_IN);
是怎样的过滤机制??
2.
canvas.rotate(angle, cx, cy);
mButtonBackground.draw(canvas);
canvas.rotate(-angle, cx, cy);
旋转对应的角度,为什么后面有旋转对应的-角度
- ColorButton 的实现
- 基于 CMFCColorButton 的 ColorButton
- 组件ColorButton
- 为ColorButton增加颜色更改事件
- PyGobject(六)布局容器之Button篇——Gtk.ColorButton
- 三子棋的实现的实现的实现
- JAVA实现的时钟实现
- 模态框的的实现
- 杀毒软件的简单实现的简单实现
- android的实现电话号码的实现
- 音频的实现音乐声音的实现
- malloc的实现、内存池的实现
- 异形窗体的实现
- 个性化的分页实现
- ASP数据库连接的实现
- Struts单选框的实现
- 梅西迭代算法的实现
- 翻页功能的实现
- 及早注册了解最新的BlackBerry开发技术
- ...
- VC++ 创建进程
- VC++ 创建进程
- webservice接口访问频率的控制问题
- ColorButton 的实现
- JSON 基础
- ]ORA-12528: TNS: 监听程序: 所有适用的例程都不允许建
- SQL Union和Union All的使用方法
- Oracle函数Decode
- 应用mina的例子做了一些修改,但有关于连接数的问题
- GlassFishv2.x初探及ejb3测试
- Android数据库应用(《Android开发入门与实战》选摘)
- 上传之前检测图片大小