一个java android 时钟 非常精致!android 小创意
来源:互联网 发布:世宗大王驱逐舰 知乎 编辑:程序博客网 时间:2024/04/28 04:17
转自http://www.eoeandroid.com/forum.php?mod=viewthread&tid=229066
部分核心代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
public
void
paint(Graphics g1) {
// Graphics2D继承Graphics,比Graphics提供更丰富的方法
Graphics2D g = (Graphics2D) g1;
/** ***画圆形时钟的刻度,每6度便有一个刻度**** */
for
(
int
i =
0
; i <
360
; i = i +
6
) {
g.setColor(Color.gray);
// 设置画笔的宽度为2
g.setStroke(
new
BasicStroke(
2
));
// 画刻度
if
(i %
90
==
0
) {
// 对于0,3,6,9点位置,使用一个大的刻度
g.setColor(Color.pink);
g.setStroke(
new
BasicStroke(
7
));
// 画笔宽度为5
// 当起点和终点一样时,画的就是点
g.drawLine(
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS),
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS));
}
else
if
(i %
30
==
0
) {
// 如果角度处于小时的位置,而且还不在0,3,6,9点时,画红色的小刻度
g.setColor(Color.orange);
g.setStroke(
new
BasicStroke(
3
));
// 画笔宽度为3
g.drawLine(
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS),
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS));
}
else
{
// 其他位置就画小刻度
g.setColor(Color.gray);
g.drawLine(
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS),
CIRCLE_X
+ (
int
) (Math.cos(i * Math.PI /
180
) * CIRCLE_X_RADIUS),
CIRCLE_Y
+ (
int
) (Math.sin(i * Math.PI /
180
) * CIRCLE_Y_RADIUS));
}
}
/** ****** 画时钟的指针 ******** */
// 画时针
Line2D.Double lh =
new
Line2D.Double(CIRCLE_X, CIRCLE_Y, CIRCLE_X
+ Math.cos((arcHour -
90
) * Math.PI /
180
) * HOUR_LENGTH,
CIRCLE_Y + Math.sin((arcHour -
90
) * Math.PI /
180
)
* HOUR_LENGTH);
// 设置画笔宽度和颜色
g.setStroke(
new
BasicStroke(
8
));
g.setColor(Color.pink);
// 利用Graphics2D的draw方法画线
g.draw(lh);
// 画分针
Line2D.Double lm =
new
Line2D.Double(CIRCLE_X, CIRCLE_Y, CIRCLE_X
+ Math.cos((arcMin -
90
) * Math.PI /
180
) * MIN_LENGTH,
CIRCLE_Y + Math.sin((arcMin -
90
) * Math.PI /
180
)
* MIN_LENGTH);
g.setStroke(
new
BasicStroke(
4
));
g.setColor(Color.orange);
g.draw(lm);
// 画秒针
Line2D.Double ls =
new
Line2D.Double(CIRCLE_X, CIRCLE_Y, CIRCLE_X
+ Math.cos((arcSec -
90
) * Math.PI /
180
) * SEC_LENGTH,
CIRCLE_Y + Math.sin((arcSec -
90
) * Math.PI /
180
)
* SEC_LENGTH);
g.setStroke(
new
BasicStroke(
1
));
g.setColor(Color.lightGray);
g.draw(ls);
/** **** 画时钟背景,并将其透明处理 ******* */
// 所有使用bufferedImageGraphics画的图像,都画在bufferedImage上,
// drawImage方法的参数含义分别是:背景图片对象、目标位置第一个角的X、Y坐标、目标位置第二个角的X、Y坐标、
// 源位置第一个角的X、Y坐标、源位置第二个角的X、Y坐标、图像对象改变时的通知接受者
bufferedImageGraphics.drawImage(img[imageID],
0
,
0
, imageSize,
imageSize,
0
,
0
, imageSize +
10
, imageSize +
10
,
this
);
// 将背景图片透明化
for
(
int
j =
0
; j < imageSize; j++) {
for
(
int
i =
0
; i < imageSize; i++) {
// 获得背景图像中(i, j)坐标的颜色值
int
pix = bufferedImage.getRGB(i, j);
Color c =
new
Color(pix);
int
R = c.getRed();
int
G = c.getGreen();
int
B = c.getBlue();
// 通过Color对象的alpha,使颜色透明。
int
newpix =
new
Color(R, G, B, alpha).getRGB();
// 重新设置背景图像该象素点的颜色
bufferedImage.setRGB(i, j, newpix);
}
}
/** 以上画背景操作都是画在bufferedImage上的,这里要将bufferedImage画在ClockLabel **/
// 将当前用户剪贴区 Clip 与椭圆区域相交,并将 Clip 设置为所得的交集
g.clip(
new
Ellipse2D.Double(
95
,
45
, imageSize, imageSize));
g.setColor(Color.white);
// 在用户剪贴区画bufferedImage
g.drawImage(bufferedImage,
95
,
45
,
this
);
}
一个精美的java时钟 (自动换背景 秒针平滑移动) - 云代码 http://yuncode.net/code/c_50a4b7d13f80f60
- 一个java android 时钟 非常精致!android 小创意
- 一个java时钟 非常精致!
- 一个小时钟 android
- Android自定义View:一个精致的打钩小动画
- 非常有意思的一个小时钟
- Android桌面小时钟
- Android 画一个 iPhone 样式的小时钟
- 一个关于时钟的非常简单的小例子
- Android时钟动画小尝试
- 【Android 非常基础】android开发小技巧
- 创意时钟
- android桌面时钟小控件开发记录
- android桌面时钟小控件开发记录
- 一个小时钟程序
- 一个 JavaScript 小时钟
- Android APP的创意
- 2.Android Skill 精致的Adapter
- Android之Canvas自定义画一个时钟
- HDU 4081 Qin Shi Huang's National Road System
- ubuntu 12.04 gstremer的开发环境代价!
- Android学习网站整理
- Github Mybatis深入学习之动态SQL
- 数据恢复软件设计与实现(一)
- 一个java android 时钟 非常精致!android 小创意
- fjhjkjhgjk个豆腐干地方
- yun 添加本地源
- GTK常用接口——窗口
- widows下的一些命令
- 关于get 和 post 提交中文的问题解决
- Java三大特征
- groovy 接口
- 高斯滤波