@@ -2,11 +2,9 @@ package com.xiasuhuei321.gank_kotlin.customview.weather
2
2
3
3
import android.graphics.Canvas
4
4
import android.graphics.Color
5
- import android.graphics.Paint
6
5
import android.graphics.PointF
7
6
import com.xiasuhuei321.gank_kotlin.context
8
7
import com.xiasuhuei321.gank_kotlin.extension.getScreenHeight
9
- import com.xiasuhuei321.gank_kotlin.extension.getScreenWidth
10
8
import java.util.*
11
9
12
10
/* *
@@ -20,7 +18,6 @@ class Rain(start: PointF, end: PointF) : WeatherShape(start, end) {
20
18
21
19
override var TAG = " Rain"
22
20
23
- var width = 5f
24
21
// 用户可以设置
25
22
var length = 20f
26
23
var originLength = 20f
@@ -29,21 +26,13 @@ class Rain(start: PointF, end: PointF) : WeatherShape(start, end) {
29
26
length = value
30
27
}
31
28
32
- var originX = 0f
33
29
var translateX = 0f
34
30
var timeSpace = 16
35
31
// var originSpeed = speed
36
32
var rainAlpha = 100
37
- private var lastTime = 0L // 从开始到现在下落所经过的时间
38
33
var rainColor = Color .parseColor(" #efefef" )
39
34
// override var time: Long = 5000 // 总共下落时间
40
35
41
- var paint = Paint ().apply {
42
- color = rainColor
43
- strokeWidth = width
44
- isAntiAlias = true
45
- alpha = rainAlpha
46
- }
47
36
48
37
// 计算加速度
49
38
override fun getAcceleration (): Float {
@@ -56,12 +45,7 @@ class Rain(start: PointF, end: PointF) : WeatherShape(start, end) {
56
45
/* *
57
46
* 绘制过程在此完成
58
47
*/
59
- override fun draw (canvas : Canvas ) {
60
- if (! isInUse) {
61
- lastTime + = randomPre()
62
- initStyle()
63
- isInUse = true
64
- }
48
+ override fun drawWhenInUse (canvas : Canvas ) {
65
49
val distance = speed * lastTime
66
50
start.y + = distance
67
51
end.y + = distance
@@ -81,52 +65,68 @@ class Rain(start: PointF, end: PointF) : WeatherShape(start, end) {
81
65
end.y = 0f
82
66
}
83
67
84
- /* *
85
- * @see WeatherShape
86
- */
87
- override fun randomPre (): Long {
88
- val random = Random ()
89
- val pre = random.nextInt(1000 ).toLong()
90
- // LogUtil.i("asdf", "random = $delay ")
91
- return pre
92
- }
68
+ // override fun initStyle(wtc: () -> Unit) {
69
+ // super.initStyle(wtc)
70
+ // }
93
71
94
- // 通过该方法来获取一个随机的初始化样式
95
- override fun initStyle () {
72
+ override fun wtc () {
96
73
val random = Random ()
97
- // 获取随机透明值
98
- rainAlpha = random.nextInt(155 ) + 50
99
- // 获得起点x偏移
100
- translateX = random.nextInt(10 ).toFloat() + 5
101
- // 获得长度
102
74
length = random.nextInt(5 ).toFloat() + originLength
103
- // 获得宽度 5 ~ 8
104
- width = random.nextInt(3 ) + 5f
105
- if (! isRandom) {
106
- start.x = translateX + originX
107
- end.x = translateX + originX
108
- } else {
109
- // 如果是随机雨点,将x坐标随机范围扩大
110
- val randomWidth = random.nextInt(context.getScreenWidth())
111
- start.x = randomWidth + originX
112
- end.x = randomWidth + originX
75
+ paint.apply {
76
+ color = rainColor
113
77
}
78
+ }
79
+
80
+
81
+ // 通过该方法来获取一个随机的初始化样式
82
+ // override fun initStyle() {
83
+ // val random = Random()
84
+ // // 获取随机透明值
85
+ // rainAlpha = random.nextInt(155) + 50
86
+ // // 获得起点x偏移
87
+ // translateX = random.nextInt(10).toFloat() + 5
88
+ // // 获得长度
89
+ // length = random.nextInt(5).toFloat() + originLength
90
+ // // 获得宽度 5 ~ 8
91
+ // width = random.nextInt(3) + 5f
92
+ // if (!isRandom) {
93
+ // start.x = translateX + originX
94
+ // end.x = translateX + originX
95
+ // } else {
96
+ // // 如果是随机雨点,将x坐标随机范围扩大
97
+ // val randomWidth = random.nextInt(context.getScreenWidth())
98
+ // start.x = randomWidth + originX
99
+ // end.x = randomWidth + originX
100
+ // }
101
+ // start.y = -length
102
+ // end.y = 0f
103
+ // paint.apply {
104
+ // alpha = rainAlpha
105
+ // strokeWidth = width
106
+ // color = rainColor
107
+ // isAntiAlias = true
108
+ // }
109
+ // super.initStyle {
110
+ //
111
+ // }
112
+ // val random = Random()
113
+ // length = random.nextInt(5).toFloat() + originLength
114
+ // paint.apply {
115
+ // color = rainColor
116
+ // }
117
+
118
+ // }
119
+
120
+ override fun randomSpeed (random : Random ): Float {
114
121
// 获取随机速度 0.02 ~ 0.06
115
122
var randomSpeed = random.nextFloat() / 10
116
123
if (randomSpeed - 0.05f > 0.01f ) {
117
124
randomSpeed - = 0.05f
118
125
} else if (randomSpeed < 0.02f ) {
119
126
randomSpeed = 0.02f
120
127
}
121
- speed = randomSpeed
122
- start.y = - length
123
- end.y = 0f
124
- paint.apply {
125
- alpha = rainAlpha
126
- strokeWidth = width
127
- color = rainColor
128
- isAntiAlias = true
129
- }
128
+
129
+ return randomSpeed
130
130
}
131
131
132
132
0 commit comments