NekoX/TMessagesProj/src/main/java/org/telegram/ui/Components/CloseProgressDrawable.java

92 lines
2.6 KiB
Java

/*
* This is the source code of Telegram for Android v. 5.x.x.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013-2018.
*/
package org.telegram.ui.Components;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.view.animation.DecelerateInterpolator;
import org.telegram.messenger.AndroidUtilities;
public class CloseProgressDrawable extends Drawable {
private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private long lastFrameTime;
private int currentAnimationTime;
private DecelerateInterpolator interpolator = new DecelerateInterpolator();
private int currentSegment;
public CloseProgressDrawable() {
super();
paint.setColor(0xff757575);
paint.setStrokeWidth(AndroidUtilities.dp(2));
paint.setStrokeCap(Paint.Cap.ROUND);
}
@Override
public void draw(Canvas canvas) {
long newTime = System.currentTimeMillis();
if (lastFrameTime != 0) {
long dt = (newTime - lastFrameTime);
currentAnimationTime += dt;
if (currentAnimationTime > 200) {
currentAnimationTime = 0;
currentSegment++;
if (currentSegment == 4) {
currentSegment -= 4;
}
}
}
canvas.save();
canvas.translate(getIntrinsicWidth() / 2, getIntrinsicHeight() / 2);
canvas.rotate(45);
paint.setAlpha(255 - (currentSegment % 4) * 40);
canvas.drawLine(-AndroidUtilities.dp(8), 0, 0, 0, paint);
paint.setAlpha(255 - ((currentSegment + 1) % 4) * 40);
canvas.drawLine(0, -AndroidUtilities.dp(8), 0, 0, paint);
paint.setAlpha(255 - ((currentSegment + 2) % 4) * 40);
canvas.drawLine(0, 0, AndroidUtilities.dp(8), 0, paint);
paint.setAlpha(255 - ((currentSegment + 3) % 4) * 40);
canvas.drawLine(0, 0, 0, AndroidUtilities.dp(8), paint);
canvas.restore();
lastFrameTime = newTime;
invalidateSelf();
}
@Override
public void setAlpha(int alpha) {
}
@Override
public void setColorFilter(ColorFilter cf) {
}
@Override
public int getOpacity() {
return PixelFormat.TRANSPARENT;
}
@Override
public int getIntrinsicWidth() {
return AndroidUtilities.dp(24);
}
@Override
public int getIntrinsicHeight() {
return AndroidUtilities.dp(24);
}
}