package view_inspector.ui;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.view.Gravity;
import android.view.WindowManager;
import android.view.animation.DecelerateInterpolator;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import javax.inject.Inject;
import view_inspector.R;
import view_inspector.dagger.scope.PerActivity;
import static android.graphics.PixelFormat.TRANSLUCENT;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR;
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
import static android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
import static android.view.WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
@PerActivity public class ProfileProgressbar extends LinearLayout {
private static int mLayoutHeight;
private final ProgressBar mProgressbar;
private final TextView mPercentage;
private int mSamples = 10;
@Inject public ProfileProgressbar(Context context) {
super(context);
inflate(context, R.layout.view_inspector_progressbar, this);
mProgressbar = (ProgressBar) findViewById(R.id.progressbar);
mProgressbar.setIndeterminate(false);
mProgressbar.setMax(100);
mPercentage = (TextView) findViewById(R.id.percentage);
}
public static WindowManager.LayoutParams createLayoutParams(Context context) {
Resources res = context.getResources();
mLayoutHeight = res.getDimensionPixelSize(R.dimen.view_inspector_toolbar_height);
if (Build.VERSION.SDK_INT == 23) { // MARSHMALLOW
mLayoutHeight = res.getDimensionPixelSize(R.dimen.view_inspector_toolbar_height_m);
}
final WindowManager.LayoutParams params =
new WindowManager.LayoutParams(MATCH_PARENT, mLayoutHeight, TYPE_SYSTEM_ERROR,
FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCH_MODAL | FLAG_LAYOUT_NO_LIMITS
| FLAG_LAYOUT_INSET_DECOR | FLAG_LAYOUT_IN_SCREEN, TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.RIGHT;
return params;
}
@Override protected void onAttachedToWindow() {
super.onAttachedToWindow();
LinearLayout progressbarLayout = (LinearLayout) findViewById(R.id.progressbar_layout);
progressbarLayout.setTranslationY(-mLayoutHeight);
progressbarLayout.setVisibility(VISIBLE);
ObjectAnimator animator =
ObjectAnimator.ofFloat(progressbarLayout, "translationY", -mLayoutHeight, 0);
animator.setInterpolator(new DecelerateInterpolator());
animator.setDuration(500);
animator.start();
}
public void setProgress(int sampleIndex) {
int progress = (int) (((float) sampleIndex / (float) mSamples) * 100);
mProgressbar.setProgress(progress);
mPercentage.setText(String.valueOf(progress));
}
public void setSamples(int max) {
mSamples = max;
}
public int getSamples() {
return mSamples;
}
}