Skip to content

Commit e7e80fc

Browse files
Interpolators
1 parent 62a6fdd commit e7e80fc

File tree

3 files changed

+159
-11
lines changed

3 files changed

+159
-11
lines changed

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/github/hamzaahmedkhan/sampleapp/MainActivity.kt

Lines changed: 92 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,108 @@
11
package com.github.hamzaahmedkhan.sampleapp
22

3-
import androidx.appcompat.app.AppCompatActivity
43
import android.os.Bundle
4+
import android.util.Log
5+
import android.view.animation.*
56
import android.widget.SeekBar
7+
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
69
import kotlinx.android.synthetic.main.activity_main.*
710
import java.text.DecimalFormat
811

912
class MainActivity : AppCompatActivity(), SeekBar.OnSeekBarChangeListener {
10-
var durationInMs = 3000L
13+
var durationInMs = 2000L
1114
override fun onCreate(savedInstanceState: Bundle?) {
1215
super.onCreate(savedInstanceState)
1316
setContentView(R.layout.activity_main)
1417

1518
btnStartAnimation.setOnClickListener {
16-
forwardCount.setAnimationDuration(durationInMs).countAnimation(0, 9999)
17-
reverseCount.setAnimationDuration(durationInMs).countAnimation(9999, 1)
18-
moneyPositive.setAnimationDuration(durationInMs).setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(0, 999999999)
19-
moneyNegative.setAnimationDuration(durationInMs).setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(999999999, 9999)
19+
when (rgInterpolator.checkedRadioButtonId) {
20+
R.id.rbNone -> {
21+
Log.e("TEST", "R.id.rbNone")
22+
forwardCount.setAnimationDuration(durationInMs).countAnimation(1, 999999)
23+
reverseCount.setAnimationDuration(durationInMs).countAnimation(999999, 1)
24+
moneyPositive.setAnimationDuration(durationInMs)
25+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(0, 9999999)
26+
moneyNegative.setAnimationDuration(durationInMs)
27+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 0)
28+
}
29+
R.id.rbOvershoot -> {
30+
Log.e("TEST", "R.id.rbAccelerate")
31+
val overshootInterpolator = OvershootInterpolator(0.3f)
32+
forwardCount.setAnimationDuration(durationInMs)
33+
.setInterpolator(overshootInterpolator).countAnimation(1, 999999)
34+
reverseCount.setAnimationDuration(durationInMs)
35+
.setInterpolator(overshootInterpolator).countAnimation(999999, 1)
36+
moneyPositive.setAnimationDuration(durationInMs)
37+
.setInterpolator(overshootInterpolator)
38+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(99, 9999999)
39+
moneyNegative.setAnimationDuration(durationInMs)
40+
.setInterpolator(overshootInterpolator)
41+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 99)
42+
}
43+
44+
R.id.rbFastOutSlowIn -> {
45+
Log.e("TEST", "R.id.rbAccelerate")
46+
val fastOutSlowInInterpolator = FastOutSlowInInterpolator()
47+
forwardCount.setAnimationDuration(durationInMs)
48+
.setInterpolator(fastOutSlowInInterpolator).countAnimation(1, 999999)
49+
reverseCount.setAnimationDuration(durationInMs)
50+
.setInterpolator(fastOutSlowInInterpolator).countAnimation(999999, 1)
51+
moneyPositive.setAnimationDuration(durationInMs)
52+
.setInterpolator(fastOutSlowInInterpolator)
53+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(99, 9999999)
54+
moneyNegative.setAnimationDuration(durationInMs)
55+
.setInterpolator(fastOutSlowInInterpolator)
56+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 99)
57+
}
58+
59+
R.id.rbAccelerate -> {
60+
Log.e("TEST", "R.id.rbAccelerate")
61+
val accelerateInterpolator = AccelerateInterpolator(2.0f)
62+
forwardCount.setAnimationDuration(durationInMs)
63+
.setInterpolator(accelerateInterpolator).countAnimation(1, 999999)
64+
reverseCount.setAnimationDuration(durationInMs)
65+
.setInterpolator(accelerateInterpolator).countAnimation(999999, 1)
66+
moneyPositive.setAnimationDuration(durationInMs)
67+
.setInterpolator(accelerateInterpolator)
68+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(99, 9999999)
69+
moneyNegative.setAnimationDuration(durationInMs)
70+
.setInterpolator(accelerateInterpolator)
71+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 99)
72+
}
73+
74+
R.id.rbDecelerate -> {
75+
Log.e("TEST", "R.id.rbDecelerate")
76+
77+
val value = DecelerateInterpolator(2.0f)
78+
forwardCount.setAnimationDuration(durationInMs)
79+
.setInterpolator(value).countAnimation(1, 999999)
80+
reverseCount.setAnimationDuration(durationInMs)
81+
.setInterpolator(value).countAnimation(999999, 1)
82+
moneyPositive.setAnimationDuration(durationInMs)
83+
.setInterpolator(value)
84+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(99, 9999999)
85+
moneyNegative.setAnimationDuration(durationInMs)
86+
.setInterpolator(value)
87+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 99)
88+
}
89+
90+
R.id.rbAccelerateDecelerate -> {
91+
Log.e("TEST", "R.id.rbAccelerateDecelerate")
92+
93+
val value = AccelerateDecelerateInterpolator()
94+
forwardCount.setAnimationDuration(durationInMs)
95+
.setInterpolator(value).countAnimation(1, 999999)
96+
reverseCount.setAnimationDuration(durationInMs)
97+
.setInterpolator(value).countAnimation(999999, 1)
98+
moneyPositive.setAnimationDuration(durationInMs)
99+
.setInterpolator(value)
100+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(99, 9999999)
101+
moneyNegative.setAnimationDuration(durationInMs)
102+
.setInterpolator(value)
103+
.setDecimalFormat(DecimalFormat("###,###,###")).countAnimation(9999999, 99)
104+
}
105+
}
20106
}
21107

22108
seekbarAnimationDuration.setOnSeekBarChangeListener(this)

app/src/main/res/layout/activity_main.xml

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,16 @@
132132
android:textSize="20sp" />
133133
</LinearLayout>
134134

135+
<View
136+
android:layout_width="match_parent"
137+
android:layout_height="2dp"
138+
android:layout_margin="4dp"
139+
android:background="#999"/>
135140

136141
<LinearLayout
137142
android:layout_width="match_parent"
138143
android:layout_height="wrap_content"
139-
android:layout_marginTop="50dp"
144+
android:layout_marginTop="10dp"
140145
android:gravity="center_vertical"
141146
android:paddingTop="10dp"
142147
android:paddingBottom="10dp">
@@ -175,19 +180,70 @@
175180
android:id="@+id/seekbarAnimationDuration"
176181
android:layout_width="match_parent"
177182
android:layout_height="wrap_content"
178-
android:max="3000"
183+
android:max="5000"
179184
android:min="100"
180185
android:paddingTop="5dp"
181186
android:paddingBottom="5dp" />
182187

183-
184188
<Button
185189
android:id="@+id/btnStartAnimation"
186190
android:layout_width="wrap_content"
187191
android:layout_height="wrap_content"
188-
android:layout_marginTop="60dp"
189192
android:layout_gravity="center_horizontal"
190-
android:text="START ANIMATION"/>
193+
android:text="START ANIMATION" />
194+
195+
<RadioGroup
196+
android:id="@+id/rgInterpolator"
197+
android:layout_width="match_parent"
198+
android:layout_height="wrap_content"
199+
android:layout_marginTop="10dp"
200+
android:gravity="center_vertical"
201+
android:orientation="vertical"
202+
android:paddingTop="10dp"
203+
android:paddingBottom="10dp">
204+
205+
<RadioButton
206+
android:id="@+id/rbNone"
207+
android:layout_width="wrap_content"
208+
android:layout_height="wrap_content"
209+
android:checked="true"
210+
android:text="None" />
211+
212+
<RadioButton
213+
android:id="@+id/rbOvershoot"
214+
android:layout_width="wrap_content"
215+
android:layout_height="wrap_content"
216+
android:text="Overshoot Interpolator" />
217+
218+
<RadioButton
219+
android:id="@+id/rbFastOutSlowIn"
220+
android:layout_width="wrap_content"
221+
android:layout_height="wrap_content"
222+
android:text="Fast out slow in Interpolator" />
223+
224+
<RadioButton
225+
android:id="@+id/rbAccelerate"
226+
android:layout_width="wrap_content"
227+
android:layout_height="wrap_content"
228+
android:text="Accelerate Interpolator" />
229+
230+
231+
<RadioButton
232+
android:id="@+id/rbDecelerate"
233+
android:layout_width="wrap_content"
234+
android:layout_height="wrap_content"
235+
android:text="Decelerate Interpolator" />
236+
237+
238+
<RadioButton
239+
android:id="@+id/rbAccelerateDecelerate"
240+
android:layout_width="wrap_content"
241+
android:layout_height="wrap_content"
242+
android:text="Accelerate Decelerate Interpolator" />
243+
244+
</RadioGroup>
245+
246+
191247

192248

193249
</LinearLayout>

0 commit comments

Comments
 (0)