实现模拟加载中的效果,一般可以通过以下方式实现:
方法一:使用ProgressDialog
ProgressDialog是Android内置的一种对话框,可以方便地实现加载中的效果。
步骤一:创建ProgressDialog
在需要展示加载中效果的Activity中,创建ProgressDialog,并设置相关参数。
ProgressDialog progressDialog = new ProgressDialog(Activity.this);
progressDialog.setTitle("加载中");
progressDialog.setMessage("数据加载中,请稍后...");
progressDialog.setCancelable(false);//屏蔽返回键和屏幕外点击事件
步骤二:显示ProgressDialog
在需要展示加载中效果的地方,显示ProgressDialog。
progressDialog.show();
步骤三:关闭ProgressDialog
在数据加载完成后,关闭ProgressDialog。
progressDialog.dismiss();
示例一:使用ProgressDialog
public class MainActivity extends AppCompatActivity {
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(MainActivity.this); //创建ProgressDialog
progressDialog.setTitle("加载中");
progressDialog.setMessage("数据加载中,请稍后...");
progressDialog.setCancelable(false);//屏蔽返回键和屏幕外点击事件
progressDialog.show();//显示ProgressDialog
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressDialog.dismiss();//关闭ProgressDialog
}
}).start();
}
}
方法二:使用自定义对话框
如果需要实现更加自定义的数据加载中效果,可以考虑通过自定义对话框实现。
步骤一:创建自定义布局
创建一个自定义布局,布局中可以包含一些需要展示的动画、图片等效果。
步骤二:将自定义布局设置给Dialog
通过AlertDialog.Builder创建一个Dialog,并将自定义布局设置给Dialog。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(R.layout.dialog_custom_loading);
AlertDialog dialog = builder.create();
dialog.show();
步骤三:在数据加载完成后关闭Dialog
在数据加载完成后,调用Dialog的dismiss()方法关闭Dialog。
dialog.dismiss();
示例二:使用自定义对话框
示例中自定义布局中添加了一个ProgressBar来展示加载中效果。
activity_main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/btn_show_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="展示自定义对话框"
android:textSize="18sp" />
</LinearLayout>
dialog_custom_loading.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#80000000"
android:padding="30dp">
<ProgressBar
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_below="@+id/pb_loading"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="数据正在加载中,请稍后..."
android:textColor="#ffffff" />
</RelativeLayout>
MainActivity中代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnShowDialog = findViewById(R.id.btn_show_dialog);
btnShowDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setView(R.layout.dialog_custom_loading);//将自定义布局设置给Dialog
AlertDialog dialog = builder.create();
dialog.show();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dialog.dismiss();//关闭Dialog
}
}).start();
}
});
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:android实现模拟加载中的效果 - Python技术站