注:软件使用 fragment + RadioGroup 切换页面,未加载任何依赖包
效果
实现步骤
第一步 增加base_loading.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/id_loading_and_retry"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center"
tools:context=".MainActivity">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="正在加载中..."
android:textSize="16sp"
android:layout_marginLeft="10dp"/>
</LinearLayout>
第二步 MainActivity.java
主要是 messagevoid(); showLoadingDialog(); dismissLoadingDialog(); 这三个方法
public class MainActivity extends Activity{
private static final String TAG = "MainActivity";
private ArrayList<Fragment> fragmentList = new ArrayList<>();
private RadioGroup radioGroup;
private FragmentManager fragmentManager;
private RadioButton rbrb1=null;
private RadioButton rbrb2=null;
private RadioButton rbrb3=null;
private RadioButton rbrb4=null;
private RadioButton rbrb5=null;
private AlertDialog alertDialog;
//==============================================
//==============================================
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initEvent();
}
//==============================================
//==============================================
/**
* 标签栏 切换事件
* 监听RadioGroup 改变
*/
private void initEvent() {
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radiobutton_home: {
setCurrentFragment(0);
break;
}
case R.id.radiobutton_message: {
//打开加载窗口
messagevoid();
setCurrentFragment(1);
break;
}
case R.id.radiobutton_discover: {
setCurrentFragment(2);
break;
}
case R.id.radiobutton_profile: {
setCurrentFragment(3);
break;
}
case R.id.radiobutton_post:{
break;
}
default: {
}
}
}
});
}
/**
* 利用线程打开加载中窗口
*/
private void messagevoid()
{
new Thread() {
public void run() {
Looper.prepare();
showLoadingDialog();
Looper.loop();
};
}.start();
}
/**
* 展示加载中窗口
*/
public void showLoadingDialog() {
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setCancelable(false);
alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_BACK)
return true;
return false;
}
});
alertDialog.show();
alertDialog.setContentView(R.layout.base_loading);
alertDialog.setCanceledOnTouchOutside(false);
}
/**
* 在fragment里调用这个,关闭加载中弹窗
* 关闭
*/
public void dismissLoadingDialog() {
if (null != alertDialog && alertDialog.isShowing()) {
alertDialog.dismiss();
}
}
/**
* 显示fragment
* @param index
*/
private void setCurrentFragment(int index){
......
}
......
第三步 MessageFragment.java
((MainActivity)getActivity()).dismissLoadingDialog();
public class MessageFragment extends Fragment {
......
@Override
public void onStart() {
super.onStart();
((MainActivity)getActivity()).dismissLoadingDialog();
}
......