Blogger Api



Java Code For Progress Bar 


Code 1

package BDNOOBRA.BLOGGERAPI;

import android.content.Context;

import android.graphics.
vas;

import android.graphics.Paint;

import android.graphics.Paint;

import android.graphics.RectF;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.view.View;

import android.view.animation.AccelerateInterpolator;

import android.view.animation.DecelerateInterpolator;

import androidx.annotation.Keep;

public class RadialProgress extends View {

 

        private long lastUpdateTime;

        private float radOffset;

        private float currentCircleLength;

        private boolean risingCircleLength;

        private float currentProgressTime;

        private RectF cicleRect = new RectF();

        private boolean useSelfAlpha;

        private float drawingCircleLenght;

 

        private int progressColor;

 

        private DecelerateInterpolator decelerateInterpolator;

        private AccelerateInterpolator accelerateInterpolator;

        private Paint progressPaint;

        private static final float rotationTime = 2000;

        private static final float risingTime = 500;

        private int size;

 

        private float currentProgress;

        private float progressAnimationStart;

        private int progressTime;

        private float animatedProgress;

        private boolean toCircle;

        private float toCircleProgress;

 

        private boolean noProgress = true;

		

       public RadialProgress(Context context) {

            super(context);

            

            size = dp(45);

 

            progressColor = 0xff2196F3;

            decelerateInterpolator = new DecelerateInterpolator();

            accelerateInterpolator = new AccelerateInterpolator();

            progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

            progressPaint.setStyle(Paint.Style.STROKE);

            progressPaint.setStrokeCap(Paint.Cap.ROUND);

            progressPaint.setStrokeWidth(dp(3));

            progressPaint.setColor(progressColor);

        }

 

        public void setUseSelfAlpha(boolean value) {

            useSelfAlpha = value;

        }

 

        @Keep

        @Override

        public void setAlpha(float alpha) {

            super.setAlpha(alpha);

            if (useSelfAlpha) {

                Drawable background = getBackground();

                int a = (int) (alpha * 255);

                if (background != null) {

                    background.setAlpha(a);

                }

                progressPaint.setAlpha(a);

            }

        }

 

        public void setNoProgress(boolean value) {

            noProgress = value;

        }

 

        public void setProgress(float value) {

            currentProgress = value;

            if (animatedProgress > value) {

                animatedProgress = value;

            }

            progressAnimationStart = animatedProgress;

            progressTime = 0;

        }

 

        private void updateAnimation() {

            long newTime = System.currentTimeMillis();

            long dt = newTime - lastUpdateTime;

            if (dt > 17) {

                dt = 17;

            }

            lastUpdateTime = newTime;

 

            radOffset += 360 * dt / rotationTime;

            int count = (int) (radOffset / 360);

            radOffset -= count * 360;

 

            if (toCircle && toCircleProgress != 1f) {

                toCircleProgress += 16 / 220f;

                if (toCircleProgress > 1f) {

                    toCircleProgress = 1f;

                }

            } else if (!toCircle && toCircleProgress != 0f) {

                toCircleProgress -= 16 / 400f;

                if (toCircleProgress < 0) {

                    toCircleProgress = 0f;

                }

            }

 

            if (noProgress) {

                if (toCircleProgress == 0) {

                    currentProgressTime += dt;

                    if (currentProgressTime >= risingTime) {

                        currentProgressTime = risingTime;

                    }

                    if (risingCircleLength) {

                        currentCircleLength =

                                4

                                        + 266

                                                * accelerateInterpolator.getInterpolation(

                                                        currentProgressTime / risingTime);

                    } else {

                        currentCircleLength =

                                4

                                        - 270

                                                * (1.0f

                                                        - decelerateInterpolator.getInterpolation(

                                                                currentProgressTime / risingTime));

                    }

 

                    if (currentProgressTime == risingTime) {

                        if (risingCircleLength) {

                            radOffset += 270;

                            currentCircleLength = -266;

                        }

                        risingCircleLength = !risingCircleLength;

                        currentProgressTime = 0;

                    }

                } else {

                    if (risingCircleLength) {

                        float old = currentCircleLength;

                        currentCircleLength =

                                4

                                        + 266

                                                * accelerateInterpolator.getInterpolation(

                                                        currentProgressTime / risingTime);

                        currentCircleLength += 360 * toCircleProgress;

                        float dx = old - currentCircleLength;

                        if (dx > 0) {

                            radOffset += old - currentCircleLength;

                        }

                    } else {

                        float old = currentCircleLength;

                        currentCircleLength =

                                4

                                        - 270

                                                * (1.0f

                                                        - decelerateInterpolator.getInterpolation(

                                                                currentProgressTime / risingTime));

                        currentCircleLength -= 364 * toCircleProgress;

                        float dx = old - currentCircleLength;

                        if (dx > 0) {

                            radOffset += old - currentCircleLength;

                        }

                    }

                }

            } else {

                float progressDiff = currentProgress - progressAnimationStart;

                if (progressDiff > 0) {

                    progressTime += dt;

                    if (progressTime >= 200.0f) {

                        animatedProgress = progressAnimationStart = currentProgress;

                        progressTime = 0;

                    } else {

                        animatedProgress =

                                progressAnimationStart

                                        + progressDiff

                                                * decelerateInterpolator

                                                        .getInterpolation(progressTime / 200.0f);

                    }

                }

                currentCircleLength = Math.max(4, 360 * animatedProgress);

            }

            invalidate();

        }

 

        public void setSize(int value) {

            size = value;

            invalidate();

        }

 

        public void setStrokeWidth(float value) {

            progressPaint.setStrokeWidth(dp(value));

        }

 

        public void setProgressColor(int color) {

            progressColor = color;

            progressPaint.setColor(progressColor);

        }

 

        public void toCircle(boolean toCircle, boolean animated) {

            this.toCircle = toCircle;

            if (!animated) {

                toCircleProgress = toCircle ? 1f : 0f;

            }

        }

 

        @Override

        protected void onDraw(Canvas canvas) {

            int x = (getMeasuredWidth() - size) / 2;

            int y = (getMeasuredHeight() - size) / 2;

            cicleRect.set(x, y, x + size, y + size);

            canvas.drawArc(

                    cicleRect,

                    radOffset,

                    drawingCircleLenght = currentCircleLength,

                    false,

                    progressPaint);

            updateAnimation();

        }

 

        public void draw(Canvas canvas, float cx, float cy) {

            cicleRect.set(cx - size / 2f, cy - size / 2f, cx + size / 2f, cy + size / 2f);

            canvas.drawArc(

                    cicleRect,

                    radOffset,

                    drawingCircleLenght = currentCircleLength,

                    false,

                    progressPaint);

            updateAnimation();

        }

 

        public boolean isCircle() {

            return Math.abs(drawingCircleLenght) >= 360;

        }

		

		private int dp(float px) {

			return (int) (getContext().getResources().getDisplayMetrics().density * px);

    }

}




Code 2


package BDNOOBRA.BLOGGERAPI;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.graphics.Paint;

import android.graphics.RectF;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.view.View;

import android.view.animation.AccelerateInterpolator;

import android.view.animation.DecelerateInterpolator;

import androidx.annotation.Keep;

public class RadialProgressView extends View {

 

        private long lastUpdateTime;

        private float radOffset;

        private float currentCircleLength;

        private boolean risingCircleLength;

        private float currentProgressTime;

        private RectF cicleRect = new RectF();

        private boolean useSelfAlpha;

        private float drawingCircleLenght;

 

        private int progressColor;

 

        private DecelerateInterpolator decelerateInterpolator;

        private AccelerateInterpolator accelerateInterpolator;

        private Paint progressPaint;

        private static final float rotationTime = 2000;

        private static final float risingTime = 500;

        private int size;

 

        private float currentProgress;

        private float progressAnimationStart;

        private int progressTime;

        private float animatedProgress;

        private boolean toCircle;

        private float toCircleProgress;

 

        private boolean noProgress = true;

		

       public RadialProgressView(Context context) {

            super(context);

            

            size = dp(45);

 

            progressColor = 0xff6B7278;

            decelerateInterpolator = new DecelerateInterpolator();

            accelerateInterpolator = new AccelerateInterpolator();

            progressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);

            progressPaint.setStyle(Paint.Style.STROKE);

            progressPaint.setStrokeCap(Paint.Cap.ROUND);

            progressPaint.setStrokeWidth(dp(3));

            progressPaint.setColor(progressColor);

        }

 

        public void setUseSelfAlpha(boolean value) {

            useSelfAlpha = value;

        }

 

        @Keep

        @Override

        public void setAlpha(float alpha) {

            super.setAlpha(alpha);

            if (useSelfAlpha) {

                Drawable background = getBackground();

                int a = (int) (alpha * 255);

                if (background != null) {

                    background.setAlpha(a);

                }

                progressPaint.setAlpha(a);

            }

        }

 

        public void setNoProgress(boolean value) {

            noProgress = value;

        }

 

        public void setProgress(float value) {

            currentProgress = value;

            if (animatedProgress > value) {

                animatedProgress = value;

            }

            progressAnimationStart = animatedProgress;

            progressTime = 0;

        }

 

        private void updateAnimation() {

            long newTime = System.currentTimeMillis();

            long dt = newTime - lastUpdateTime;

            if (dt > 17) {

                dt = 17;

            }

            lastUpdateTime = newTime;

 

            radOffset += 360 * dt / rotationTime;

            int count = (int) (radOffset / 360);

            radOffset -= count * 360;

 

            if (toCircle && toCircleProgress != 1f) {

                toCircleProgress += 16 / 220f;

                if (toCircleProgress > 1f) {

                    toCircleProgress = 1f;

                }

            } else if (!toCircle && toCircleProgress != 0f) {

                toCircleProgress -= 16 / 400f;

                if (toCircleProgress < 0) {

                    toCircleProgress = 0f;

                }

            }

 

            if (noProgress) {

                if (toCircleProgress == 0) {

                    currentProgressTime += dt;

                    if (currentProgressTime >= risingTime) {

                        currentProgressTime = risingTime;

                    }

                    if (risingCircleLength) {

                        currentCircleLength =

                                4

                                        + 266

                                                * accelerateInterpolator.getInterpolation(

                                                        currentProgressTime / risingTime);

                    } else {

                        currentCircleLength =

                                4

                                        - 270

                                                * (1.0f

                                                        - decelerateInterpolator.getInterpolation(

                                                                currentProgressTime / risingTime));

                    }

 

                    if (currentProgressTime == risingTime) {

                        if (risingCircleLength) {

                            radOffset += 270;

                            currentCircleLength = -266;

                        }

                        risingCircleLength = !risingCircleLength;

                        currentProgressTime = 0;

                    }

                } else {

                    if (risingCircleLength) {

                        float old = currentCircleLength;

                        currentCircleLength =

                                4

                                        + 266

                                                * accelerateInterpolator.getInterpolation(

                                                        currentProgressTime / risingTime);

                        currentCircleLength += 360 * toCircleProgress;

                        float dx = old - currentCircleLength;

                        if (dx > 0) {

                            radOffset += old - currentCircleLength;

                        }

                    } else {

                        float old = currentCircleLength;

                        currentCircleLength =

                                4

                                        - 270

                                                * (1.0f

                                                        - decelerateInterpolator.getInterpolation(

                                                                currentProgressTime / risingTime));

                        currentCircleLength -= 364 * toCircleProgress;

                        float dx = old - currentCircleLength;

                        if (dx > 0) {

                            radOffset += old - currentCircleLength;

                        }

                    }

                }

            } else {

                float progressDiff = currentProgress - progressAnimationStart;

                if (progressDiff > 0) {

                    progressTime += dt;

                    if (progressTime >= 200.0f) {

                        animatedProgress = progressAnimationStart = currentProgress;

                        progressTime = 0;

                    } else {

                        animatedProgress =

                                progressAnimationStart

                                        + progressDiff

                                                * decelerateInterpolator

                                                        .getInterpolation(progressTime / 200.0f);

                    }

                }

                currentCircleLength = Math.max(4, 360 * animatedProgress);

            }

            invalidate();

        }

 

        public void setSize(int value) {

            size = value;

            invalidate();

        }

 

        public void setStrokeWidth(float value) {

            progressPaint.setStrokeWidth(dp(value));

        }

 

        public void setProgressColor(int color) {

            progressColor = color;

            progressPaint.setColor(progressColor);

        }

 

        public void toCircle(boolean toCircle, boolean animated) {

            this.toCircle = toCircle;

            if (!animated) {

                toCircleProgress = toCircle ? 1f : 0f;

            }

        }

 

        @Override

        protected void onDraw(Canvas canvas) {

            int x = (getMeasuredWidth() - size) / 2;

            int y = (getMeasuredHeight() - size) / 2;

            cicleRect.set(x, y, x + size, y + size);

            canvas.drawArc(

                    cicleRect,

                    radOffset,

                    drawingCircleLenght = currentCircleLength,

                    false,

                    progressPaint);

            updateAnimation();

        }

 

        public void draw(Canvas canvas, float cx, float cy) {

            cicleRect.set(cx - size / 2f, cy - size / 2f, cx + size / 2f, cy + size / 2f);

            canvas.drawArc(

                    cicleRect,

                    radOffset,

                    drawingCircleLenght = currentCircleLength,

                    false,

                    progressPaint);

            updateAnimation();

        }

 

        public boolean isCircle() {

            return Math.abs(drawingCircleLenght) >= 360;

        }

		

		private int dp(float px) {

			return (int) (getContext().getResources().getDisplayMetrics().density * px);

    }

}



Java Files Download Link


Download This Project

Rate this article

Getting Info...

Post a Comment

Cookies Consent

This website uses cookies to ensure you get the best experience on our website.

Cookies Policy

We employ the use of cookies. By accessing Lantro UI, you agreed to use cookies in agreement with the Lantro UI's Privacy Policy.

Most interactive websites use cookies to let us retrieve the user’s details for each visit. Cookies are used by our website to enable the functionality of certain areas to make it easier for people visiting our website. Some of our affiliate/advertising partners may also use cookies.