Skip to content

Commit 4ea7789

Browse files
committed
added loader
1 parent 404b6b0 commit 4ea7789

File tree

5 files changed

+208
-2
lines changed

5 files changed

+208
-2
lines changed
0 Bytes
Binary file not shown.

app/src/main/java/com/agrawalsuneet/squareloaders/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ class MainActivity : AppCompatActivity() {
2121

2222
override fun onCreate(savedInstanceState: Bundle?) {
2323
super.onCreate(savedInstanceState)
24-
setContentView(R.layout.activity_main_music_loader)
24+
setContentView(R.layout.activity_main_rotating_square_loader)
2525

26-
supportActionBar?.title = "MusicPlayerLoader"
26+
supportActionBar?.title = "RotatingSquareLoader"
2727

2828
container = findViewById(R.id.container)
2929

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:id="@+id/container"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
android:gravity="center"
7+
android:orientation="vertical">
8+
9+
<LinearLayout
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:layout_margin="16dp"
13+
android:gravity="center"
14+
android:orientation="horizontal">
15+
16+
17+
<!--<com.agrawalsuneet.squareloaderspack.loaders.MusicPlayerLoader
18+
android:layout_width="match_parent"
19+
android:layout_height="match_parent"
20+
app:musicplayer_animDuration="500"
21+
app:musicplayer_delayDuration="200"
22+
app:musicplayer_interpolator="@android:anim/linear_interpolator"
23+
app:musicplayer_isSingleColor="true"
24+
app:musicplayer_noOfDots="5"
25+
app:musicplayer_rectColor="@color/red"
26+
app:musicplayer_rectDistance="2dp"
27+
app:musicplayer_rectHeight="30dp"
28+
app:musicplayer_rectWidth="8dp" />
29+
30+
<com.agrawalsuneet.squareloaderspack.loaders.MusicPlayerLoader
31+
android:layout_width="match_parent"
32+
android:layout_height="match_parent"
33+
android:layout_marginLeft="16dp"
34+
app:musicplayer_animDuration="500"
35+
app:musicplayer_delayDuration="200"
36+
app:musicplayer_interpolator="@android:anim/linear_interpolator"
37+
app:musicplayer_isSingleColor="true"
38+
app:musicplayer_noOfDots="5"
39+
app:musicplayer_rectColor="@color/amber"
40+
app:musicplayer_rectDistance="2dp"
41+
app:musicplayer_rectHeight="30dp"
42+
app:musicplayer_rectWidth="8dp" />
43+
44+
<com.agrawalsuneet.squareloaderspack.loaders.MusicPlayerLoader
45+
android:layout_width="match_parent"
46+
android:layout_height="match_parent"
47+
android:layout_marginLeft="16dp"
48+
app:musicplayer_animDuration="500"
49+
app:musicplayer_delayDuration="200"
50+
app:musicplayer_interpolator="@android:anim/linear_interpolator"
51+
app:musicplayer_isSingleColor="true"
52+
app:musicplayer_noOfDots="5"
53+
app:musicplayer_rectColor="@color/green"
54+
app:musicplayer_rectDistance="2dp"
55+
app:musicplayer_rectHeight="30dp"
56+
app:musicplayer_rectWidth="8dp" />-->
57+
58+
</LinearLayout>
59+
60+
<!--<com.agrawalsuneet.squareloaderspack.basicviews.SquareView
61+
android:layout_width="wrap_content"
62+
android:layout_height="wrap_content" />-->
63+
64+
65+
<com.agrawalsuneet.squareloaderspack.loaders.RotatingSquareLoader
66+
android:layout_width="wrap_content"
67+
android:layout_height="wrap_content" />
68+
69+
</LinearLayout>

squareloaderspack/src/main/java/com/agrawalsuneet/squareloaderspack/basicviews/SquareView.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ class SquareView : View, LoaderContract {
1616
private var squareColor: Int = resources.getColor(R.color.grey)
1717
private lateinit var squarePaint: Paint
1818

19+
private var isHollowSquare: Boolean = false
20+
private var strokeWidth : Int = 50
21+
1922
constructor(context: Context) : super(context) {}
2023

2124
constructor(context: Context, squareColor: Int, length: Int) : super(context) {
@@ -24,6 +27,14 @@ class SquareView : View, LoaderContract {
2427
initValues()
2528
}
2629

30+
constructor(context: Context, squareColor: Int, length: Int, isHollow: Boolean, strokeWidth : Int) : super(context) {
31+
this.squareColor = squareColor
32+
this.squareLength = length
33+
this.isHollowSquare = isHollow
34+
this.strokeWidth = strokeWidth
35+
initValues()
36+
}
37+
2738
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
2839
initAttributes(attrs!!)
2940
}
@@ -46,6 +57,10 @@ class SquareView : View, LoaderContract {
4657
private fun initValues() {
4758
squarePaint = Paint()
4859
squarePaint.color = squareColor
60+
if (isHollowSquare) {
61+
squarePaint.style = Paint.Style.STROKE
62+
squarePaint.strokeWidth = strokeWidth.toFloat()
63+
}
4964
}
5065

5166
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package com.agrawalsuneet.squareloaderspack.loaders
2+
3+
import android.content.Context
4+
import android.util.AttributeSet
5+
import android.view.Gravity
6+
import android.view.ViewTreeObserver
7+
import android.view.animation.Animation
8+
import android.view.animation.LinearInterpolator
9+
import android.view.animation.RotateAnimation
10+
import android.widget.LinearLayout
11+
import com.agrawalsuneet.squareloaderspack.R
12+
import com.agrawalsuneet.squareloaderspack.basicviews.LoaderContract
13+
import com.agrawalsuneet.squareloaderspack.basicviews.SquareView
14+
15+
/**
16+
* Created by suneet on 1/18/18.
17+
*/
18+
class RotatingSquareLoader : LinearLayout, LoaderContract {
19+
20+
var squareSideLenght: Float = 200.0f
21+
var strokeWidth: Float = 50.0f
22+
23+
var squareColor: Int = resources.getColor(R.color.green)
24+
25+
var animDuration: Int = 2000
26+
27+
private lateinit var squareView: SquareView
28+
29+
30+
constructor(context: Context) : super(context) {
31+
initView()
32+
}
33+
34+
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
35+
initAttributes(attrs)
36+
initView()
37+
}
38+
39+
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
40+
initAttributes(attrs)
41+
initView()
42+
}
43+
44+
constructor(context: Context, noOfSticks: Int, outerCircleRadius: Float, innerCircleRadius: Float, sticksColor: Int, viewBackgroundColor: Int) : super(context) {
45+
/*this.noOfSticks = noOfSticks
46+
this.outerCircleRadius = outerCircleRadius
47+
this.innerCircleRadius = innerCircleRadius
48+
this.sticksColor = sticksColor*/
49+
initView()
50+
}
51+
52+
override fun initAttributes(attrs: AttributeSet) {
53+
/*val typedArray = context.obtainStyledAttributes(attrs, R.styleable.RotatingCircularSticksLoader, 0, 0)
54+
55+
this.noOfSticks = typedArray
56+
.getInteger(R.styleable.RotatingCircularSticksLoader_rotatingsticks_noOfSticks, 50)
57+
58+
this.outerCircleRadius = typedArray
59+
.getDimension(R.styleable.RotatingCircularSticksLoader_rotatingsticks_outerCircleRadius, 200.0f)
60+
this.innerCircleRadius = typedArray
61+
.getDimension(R.styleable.RotatingCircularSticksLoader_rotatingsticks_innerCircleRadius, 100.0f)
62+
63+
64+
this.sticksColor = typedArray
65+
.getColor(R.styleable.RotatingCircularSticksLoader_rotatingsticks_stickColor, resources.getColor(R.color.grey))
66+
this.viewBackgroundColor = typedArray
67+
.getColor(R.styleable.RotatingCircularSticksLoader_rotatingsticks_viewBackgroundColor, resources.getColor(android.R.color.white))
68+
69+
this.animDuration = typedArray
70+
.getInteger(R.styleable.RotatingCircularSticksLoader_rotatingsticks_animDuration, 5000)
71+
72+
typedArray.recycle()*/
73+
}
74+
75+
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
76+
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
77+
setMeasuredDimension(2 * squareSideLenght.toInt(), 2 * squareSideLenght.toInt())
78+
}
79+
80+
private fun initView() {
81+
removeAllViews()
82+
removeAllViewsInLayout()
83+
84+
gravity = Gravity.CENTER
85+
86+
squareView = SquareView(context, squareColor, squareSideLenght.toInt(), true, strokeWidth.toInt())
87+
88+
89+
addView(squareView)
90+
91+
val loaderView = this
92+
93+
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
94+
override fun onGlobalLayout() {
95+
startLoading()
96+
97+
val vto = loaderView.viewTreeObserver
98+
vto.removeOnGlobalLayoutListener(this)
99+
}
100+
})
101+
}
102+
103+
private fun startLoading() {
104+
105+
val rotationAnim = getRotateAnimation()
106+
squareView.startAnimation(rotationAnim)
107+
}
108+
109+
private fun getRotateAnimation(): RotateAnimation {
110+
111+
val transAnim = RotateAnimation(0f, 360f,
112+
Animation.RELATIVE_TO_SELF, 0.5f,
113+
Animation.RELATIVE_TO_SELF, 0.5f)
114+
transAnim.duration = animDuration.toLong()
115+
transAnim.fillAfter = true
116+
transAnim.repeatCount = Animation.INFINITE
117+
transAnim.repeatMode = Animation.RESTART
118+
transAnim.interpolator = LinearInterpolator()
119+
120+
return transAnim
121+
}
122+
}

0 commit comments

Comments
 (0)