package cn.alphabets.light.ui;
import android.app.Activity;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
/**
* Mask
* Created by luo on 14/12/2.
*/
public class MaskFragment extends DialogFragment {
public static final String TAG = "LOADING_MASK";
private boolean isAdded = false;
private boolean isProgress = false;
private TextView mProgress;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// 设定背景为透明
this.getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
// 设定状态
this.setCancelable(false);
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
// 添加进度框
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout layout = new LinearLayout(getActivity());
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(params);
ProgressBar cycle = new ProgressBar(getActivity(), null, android.R.attr.progressBarStyle);
layout.addView(cycle);
// 显示进度
if (isProgress) {
mProgress = new TextView(getActivity());
mProgress.setGravity(Gravity.CENTER_HORIZONTAL);
mProgress.setTextColor(Color.LTGRAY);
layout.addView(mProgress);
}
return layout;
}
public void updateProgress(final int progress) {
Activity activity = getActivity();
if (activity == null) {
return;
}
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
mProgress.setText(progress + "%");
}
});
}
public void show(FragmentManager manager) {
this.show(manager, false);
}
public void show(FragmentManager manager, boolean progress) {
if (isAdded) {
return;
}
isProgress = progress;
isAdded = true;
this.show(manager, TAG);
}
public void hide() {
isAdded = false;
try {
this.dismiss();
} catch (IllegalStateException e) {
// 忽略该异常,发生的条件尚不明
}
}
}