android 自定义 dialog
1. 继承Dialog类
import android.animation.ObjectAnimator;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import com.xxx.xxx.R;
import com.xxx.xxx.interfaces.ILoadingListening;
public class XXXLoadingDialog extends Dialog implements ILoadingListening {
private Context context;
private ImageView progress;
public LoadingDialog(Context context, String msg) {
super(context, R.style.no_title);
this.context = context;
initView(msg);
}
private void initView(String msg) {
View dialogView = LayoutInflater.from(context).inflate(R.layout.XXXloading, null);
setContentView(dialogView);
setCanceledOnTouchOutside(false);
setCancelable(true);
progress = dialogView.findViewById(R.id.progress);
TextView title = dialogView.findViewById(R.id.title);
if (msg != null && msg.length() > 0) {
title.setText(msg);
}
}
@Override
public void show() {
super.show();
ObjectAnimator rotation = ObjectAnimator.ofFloat(progress, "rotation", 0f, 359f);
rotation.setRepeatCount(ObjectAnimator.INFINITE);
rotation.setInterpolator(new LinearInterpolator());
rotation.setDuration(1000);
rotation.start();
}
@Override
public void setIsCancelLoading(boolean iscancel) {
setCancelable(iscancel);
}
@Override
public void showLoading() {
show();
}
@Override
public void hiedLoading() {
if (isShowing()) {
dismiss();
}
}
}
2. dialog布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:layout_margin="40dp"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingTop="20dp"
android:visibility="visible">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<ImageView
android:id="@+id/progress"
android:layout_width="150dp"
android:layout_height="150dp"
android:background="@mipmap/loading" />
</RelativeLayout>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="加载中"
android:textColor="@color/gray"
android:textSize="40sp" />
</LinearLayout>
</RelativeLayout>
3. 使用
全局变量定义
private XXXDialog loading;
初始化
loading = new XXXDialog(this, getString(R.string.loading));
显示调用
loading.showLoading();
隐藏调用
loading.hiedLoading();