android各种提示Dialog 弹出框
2023-03-07 09:07:43 时间
开发过程中 经常需要各种弹出框 用来做提示 或者 展示一些 数据信息。写了一个 DialogUtil , 话不多说 直接上代码 ,希望对大家有帮助。
public static Dialog getProcessDialog(Activity activity, CharSequence message,
boolean dismissTouchOutside, boolean cancelable) {
final LayoutInflater inflater = LayoutInflater.from(activity);
View v = inflater.inflate(R.layout.progress_hud, null);
Dialog dialog = getCustomDialog(activity, v, dismissTouchOutside, cancelable, -1);
if (dismissTouchOutside) {
dialog.setCanceledOnTouchOutside(true);
} else {
dialog.setCanceledOnTouchOutside(false);
}
ImageView spinner = (ImageView) v.findViewById(R.id.spinnerImageView);
((AnimationDrawable) spinner.getBackground()).start();
TextView messageTv = (TextView) v.findViewById(R.id.message);
if (TextUtils.isEmpty(message)) {
messageTv.setVisibility(View.GONE);
} else {
messageTv.setText(message);
messageTv.setVisibility(View.VISIBLE);
}
return dialog;
}
public static Dialog getCustomDialog(final Activity activity, View view, boolean dismissTouchOutside,
boolean cancelable, int theme) {
//Dialog dialog = theme > 0 ? new FullScreenDialogHUD(activity, theme)
// : new Dialog(activity, R.style.Dialog_FullScreen);
Dialog dialog = new Dialog(activity, R.style.Dialog_FullScreen);
dialog.setContentView(view);
dialog.setCancelable(cancelable);
dialog.setCanceledOnTouchOutside(dismissTouchOutside);
if (!cancelable) {
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
activity.finish();
}
return false;
}
});
}
return dialog;
}
public static Dialog getOneButtonDialog(final Activity activity, String content,
boolean dismissTouchOutside, boolean cancelable,
DialogInterface.OnClickListener confirmOnClickListener) {
Dialog dialog = new AlertDialog.Builder(activity)
.setPositiveButton(R.string.confirm, confirmOnClickListener)
.setCancelable(cancelable)
.setMessage(content)
.create();
dialog.setCanceledOnTouchOutside(dismissTouchOutside);
if (!cancelable) {
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
activity.finish();
}
return false;
}
});
}
return dialog;
}
public static Dialog getButtonsDialog(Activity activity, int resId,
DialogInterface.OnClickListener confirmOnClickListener) {
return getButtonsDialog(activity, activity.getString(resId), true, true, confirmOnClickListener,
null);
}
public static Dialog getButtonsDialog(Activity activity, String content,
DialogInterface.OnClickListener confirmOnClickListener) {
return getButtonsDialog(activity, content, true, true, confirmOnClickListener, null);
}
public static Dialog getButtonsDialog(Activity activity, String content, boolean dismissTouchOutside,
boolean cancelable, DialogInterface.OnClickListener confirmOnClickListener,
DialogInterface.OnClickListener cancelOnClickListener) {
Dialog dialog = new AlertDialog.Builder(activity)
.setNegativeButton(R.string.cancel, cancelOnClickListener)
.setPositiveButton(R.string.confirm, confirmOnClickListener)
.setCancelable(cancelable)
.setMessage(content)
.create();
dialog.setCanceledOnTouchOutside(dismissTouchOutside);
return dialog;
}
progress_hud.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:background="@android:color/transparent">
<ImageView
android:id="@+id/spinnerImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@anim/spinner"/>
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:textColor="#FFFFFF"/>
</LinearLayout>
style Dialog_FullScreen
<style name="Dialog.FullScreen" parent="Theme.AppCompat.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
有这些 其他弹出个人信息框 都可以自定义用getCustomDialog这个方法 传 对应的 view 实现。很方便。
希望对大家有帮助。
相关文章
- LibreOffice 7.5 发布:漂亮的新应用图标和酷炫功能
- elementary OS 7 发布
- Windows 应用兼容层 Wine 8.1 发布:默认启用“Windows 10”前缀
- 微软正测试新功能:当 Windows 11 有新的小组件可用时会提醒通知
- 解析分布式存储选型和应用九个典型问题
- ClickHouse在自助行为分析场景的实践应用
- Chrome DevTools 远程调试安卓网页的原理
- Uni-app + Vue3 页面如何跳转及传参?
- 微软证实系统还原点会损坏 Windows 11 22H2 版本应用程序
- 巧用 Transition 实现短视频 APP 点赞动画
- 初学者试试,HarmonyOS应用开发者基础认证
- 媒体实测微软 Windows 开发工具包 2023:存在不兼容 HDR 显示器、某些应用无法运行等问题
- 快速了解Navigator API SetAppBadge
- 微软 Windows 11 Dev 预览版 Build 25276 发布,应用兼容问题对话框 UI 改进
- 基于Next.js、Prisma、Postgres和Fastfy构建全栈APP
- 开始菜单搜索框变圆角,微软 Windows 11 Beta 预览版 22621.1095 和 22623.1095 发布
- 2022-2023 十大应用开发趋势
- 观远数据发布业内首部《移动BI白皮书》,深入业务数字化场景重新定义移动BI
- Windows 10 学院:不借助第三方工具如何卸载 Windows 10 预装应用
- 正处高质量发展期,我国大数据产业突破1.3万亿元