Skip to content

Commit

Permalink
Added : Animation in XML
Browse files Browse the repository at this point in the history
  • Loading branch information
hi-manshu committed Jan 10, 2019
1 parent e955222 commit 6023e69
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 22 deletions.
4 changes: 2 additions & 2 deletions app/src/main/java/com/mindorks/app/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.mindorks.app

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)


}
}
4 changes: 4 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
app:innerProgress="40"
app:centerProgress="40"
app:useRoundedCorner="true"
app:centerProgressStartAngle="270"
app:innerProgressStartAngle="270"
app:isAnimationOn="true"
app:outerProgressStartAngle="270"
/>

</RelativeLayout>
66 changes: 59 additions & 7 deletions radialprogressbar/src/main/java/com/mindorks/RadialProgressBar.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import android.graphics.Color
import android.graphics.Paint
import android.graphics.RectF
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.view.animation.DecelerateInterpolator

Expand All @@ -30,12 +29,13 @@ class RadialProgressBar : View {


//Common Things
private var isAnimationOn = true
private var mRoundedCorners = true
private val mMaxSweepAngle = 360f


//Data of the Outer View
private var mStartAngleOuterView = -90
private var mStartAngleOuterView = 270
private var mOuterProgress = 30
private var mSweepAngleOuterView = 0
private var mAnimationDurationOuterView = 400
Expand All @@ -44,7 +44,7 @@ class RadialProgressBar : View {
private var mPaintOuterView = Paint(Paint.ANTI_ALIAS_FLAG)

//Data of the Center View
private var mStartAngleCenterView = -90
private var mStartAngleCenterView = 270
private var mSweepAngleCenterView = 0
private var mAnimationDurationCenterView = 400
private var mMaxProgressCenterView = 100
Expand All @@ -54,7 +54,7 @@ class RadialProgressBar : View {


//Data of the Inner View
private var mStartAngleInnerView = -90
private var mStartAngleInnerView = 270
private var mSweepAngleInnerView = 0
private var mInnerProgress = 30
private var mAnimationDurationInnerView = 400
Expand All @@ -78,16 +78,34 @@ class RadialProgressBar : View {
mInnerProgress = a.getInteger(R.styleable.RadialProgressBar_innerProgress, mInnerProgress)
mProgressColorInnerView = a.getColor(R.styleable.RadialProgressBar_innerProgressColor, mProgressColorInnerView)
mCenterProgress = a.getInteger(R.styleable.RadialProgressBar_centerProgress, mCenterProgress)
mProgressColorCenterView = a.getColor(R.styleable.RadialProgressBar_centerProgressColor, mProgressColorCenterView)
mRoundedCorners = a.getBoolean(R.styleable.RadialProgressBar_useRoundedCorner,mRoundedCorners)
mProgressColorCenterView =
a.getColor(R.styleable.RadialProgressBar_centerProgressColor, mProgressColorCenterView)
mRoundedCorners = a.getBoolean(R.styleable.RadialProgressBar_useRoundedCorner, mRoundedCorners)
isAnimationOn = a.getBoolean(R.styleable.RadialProgressBar_isAnimationOn, isAnimationOn)
mStartAngleOuterView = a.getInteger(R.styleable.RadialProgressBar_outerProgressStartAngle, mStartAngleOuterView)
mStartAngleCenterView =
a.getInteger(R.styleable.RadialProgressBar_centerProgressStartAngle, mStartAngleCenterView)
mStartAngleInnerView = a.getInteger(R.styleable.RadialProgressBar_innerProgressStartAngle, mStartAngleInnerView)
a.recycle()
setAnimationInProgressView(isAnimationOn)
setOuterProgress(mOuterProgress)
setOuterProgressColor(mProgressColorOuterView)
setInnerProgress(mInnerProgress)
setInnerProgressColor(mProgressColorInnerView)
setCenterProgress(mCenterProgress)
setCenterProgressColor(mProgressColorCenterView)
useRoundedCorners(mRoundedCorners)
setStartAngleCenterView(mStartAngleCenterView)
setStartAngleInnerView(mStartAngleInnerView)
setStartAngleOuterView(mStartAngleOuterView)
}

private fun setAnimationInProgressView(animationOn: Boolean) {
if (!animationOn) {
mAnimationDurationOuterView = 0
mAnimationDurationInnerView = 0
mAnimationDurationCenterView = 0
}
}

private fun drawInnerCircle(canvas: Canvas?) {
Expand Down Expand Up @@ -162,6 +180,39 @@ class RadialProgressBar : View {
return this.mOuterProgress
}

fun getInnerProgress(): Int {
return this.mInnerProgress
}

fun getCenterProgress(): Int {
return this.mCenterProgress
}

fun getStartAngleOuterView(): Int {
return this.mStartAngleOuterView
}

fun getStartAngleInnerView(): Int {
return this.mStartAngleInnerView
}

fun getStartAngleCenterView(): Int {
return this.mStartAngleCenterView
}

fun setStartAngleCenterView(angle: Int) {
mStartAngleCenterView = angle
}

fun setStartAngleOuterView(angle: Int) {
mStartAngleOuterView = angle
}

fun setStartAngleInnerView(angle: Int) {
mStartAngleInnerView = angle
}


fun setOuterProgress(progress: Int) {
if (progress != 0) mOuterProgress = progress
val animator =
Expand Down Expand Up @@ -209,7 +260,8 @@ class RadialProgressBar : View {

fun setCenterProgress(progress: Int) {
if (progress != 0) mCenterProgress = progress
val animator = ValueAnimator.ofFloat(mSweepAngleCenterView.toFloat(), calcSweepAngleFromCenterProgress(mCenterProgress))
val animator =
ValueAnimator.ofFloat(mSweepAngleCenterView.toFloat(), calcSweepAngleFromCenterProgress(mCenterProgress))
animator.interpolator = DecelerateInterpolator()
animator.duration = mAnimationDurationCenterView.toLong()
animator.addUpdateListener { valueAnimator ->
Expand Down
32 changes: 19 additions & 13 deletions radialprogressbar/src/main/res/values/attrs.xml
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RadialProgressBar">
<!--outer view-->
<attr name="outerProgress" format="integer"/>
<attr name="outerProgressColor" format="color"/>
<!--center view-->
<attr name="centerProgress" format="integer"/>
<attr name="centerProgressColor" format="color"/>
<!--inner view-->
<attr name="innerProgress" format="integer"/>
<attr name="innerProgressColor" format="color"/>
<declare-styleable name="RadialProgressBar">
<!--outer view-->
<attr name="outerProgress" format="integer"/>
<attr name="outerProgressColor" format="color"/>
<attr name="outerProgressStartAngle" format="integer"/>
<!--center view-->
<attr name="centerProgress" format="integer"/>
<attr name="centerProgressColor" format="color"/>
<attr name="centerProgressStartAngle" format="integer"/>

<!-- Common Attrs-->
<attr name="useRoundedCorner" format="boolean"/>
</declare-styleable>
<!--inner view-->
<attr name="innerProgress" format="integer"/>
<attr name="innerProgressColor" format="color"/>
<attr name="innerProgressStartAngle" format="integer"/>


<!-- Common Attrs-->
<attr name="useRoundedCorner" format="boolean"/>
<attr name="isAnimationOn" format="boolean"/>
</declare-styleable>
</resources>

0 comments on commit 6023e69

Please sign in to comment.