package com.mopub.nativeads;
import android.content.Context;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import com.mopub.common.Preconditions;
import com.mopub.common.util.Dips;
import com.mopub.common.util.Views;
import static android.widget.RelativeLayout.LayoutParams.MATCH_PARENT;
class SpinningProgressView extends ViewGroup {
@NonNull private final ProgressBar mProgressBar;
private int mProgressIndicatorRadius;
SpinningProgressView(@NonNull final Context context) {
super(context);
final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT);
params.gravity = Gravity.CENTER;
setLayoutParams(params);
setVisibility(GONE);
setBackgroundColor(Color.BLACK);
getBackground().setAlpha(180);
mProgressBar = new ProgressBar(context);
mProgressIndicatorRadius = Dips.asIntPixels(25, getContext());
mProgressBar.setIndeterminate(true);
addView(mProgressBar);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
if (changed) {
final int centerX = (left + right) / 2;
final int centerY = (top + bottom) / 2;
mProgressBar.layout(
centerX - mProgressIndicatorRadius,
centerY - mProgressIndicatorRadius,
centerX + mProgressIndicatorRadius,
centerY + mProgressIndicatorRadius
);
}
}
boolean addToRoot(@NonNull final View view) {
Preconditions.checkNotNull(view);
final View rootView = view.getRootView();
if (rootView != null && rootView instanceof ViewGroup) {
final ViewGroup rootViewGroup = (ViewGroup) rootView;
setVisibility(VISIBLE);
setMeasuredDimension(rootView.getWidth(), rootView.getHeight());
rootViewGroup.addView(this);
forceLayout();
return true;
}
return false;
}
boolean removeFromRoot() {
Views.removeFromParent(this);
setVisibility(GONE);
return true;
}
}