//第一种 先上效果图,中间的+号小图片是一直旋转的。
//第一步 首先在res-layout下建立一个自定义布局loading_dialog.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/dialog_view"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="80dp"
android:minWidth="80dp"
android:gravity="center"
android:background="@drawable/corners_5"
android:padding="10dp">
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_delete"
android:layout_marginBottom="10dp"
/>
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="#FFFFFF"
android:text="数据加载中……" />
</LinearLayout>
//第二步 在res-drawable新建样式属性文件corners_5.xml。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 填充色 -->
<solid android:color="#97706f6f" />
<!-- 边距 -->
<corners
android:topLeftRadius="5dp"
android:topRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"/>
</shape>
//第三步 在styles.xml 下添加自定义样式。
<!-- 自定义loading dialog -->
<style name="loading_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/colorEmpty</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">false</item>
</style>
//第四步 在colors.xml 定义一个空白的颜色样式。
<color name="colorEmpty">#00000000</color><!-- 透明色-->
//第五步 在res文件夹下,新建文件夹anim, 并anim文件夹下新建弹窗动画效果loadingdialog_anim.xml。
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="+360"
android:duration="1500"
android:startOffset="-1"
android:repeatMode="restart"
android:repeatCount="-1"/>
</set>
//第六步 再写一个LoadingDialog类,在Activity里调用,这里面把所有功能都封装好。
public class LoadingDialog {
public static Dialog getLoadingDialog(Context context, String msg) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
// main.xml中的ImageView
ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img);
TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字
// 加载动画
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(context, R.anim.loadingdialog_anim);
// 使用ImageView显示动画
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
tipTextView.setText(msg);// 设置加载信息
Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog
loadingDialog.setCancelable(false);// 不可以用“返回键”取消
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局
return loadingDialog;
}
}
//第七步 在Activity里调用。
//在需要调用的地方:
Dialog dialog = LoadingDialog.getLoadingDialog(Main4Activity.this, "加载中...");
//开启
dialog.show();
//结束
dialog.dismiss();
//第二种 先上效果图
//第一步 自定义dialog.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:showDividers="middle"
android:background="@color/colorAccent"
android:gravity="center">
<!--还可以给这个父布局设置个圆角的属性,看起来效果比较好-->
<TextView
android:id="@+id/from_album_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center"
android:gravity="center"
android:text="第一个"
android:textSize="20sp"
android:textColor="@color/colorPrimary"/>
<TextView
android:id="@+id/from_system_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_gravity="center"
android:gravity="center"
android:text="第二个"
android:textSize="20sp"
android:textColor="@color/colorPrimary"/>
</LinearLayout>
//第二步 在Styles里设置风格属性,自定义Dialog的样式。
<style name="BottomDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<!-- 浮于Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 边框 -->
<item name="android:windowFrame">@null</item>
<!-- Dialog以外的区域模糊效果 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 无标题 -->
<item name="android:windowNoTitle">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<!-- Dialog进入及退出动画 -->
<item name="android:windowAnimationStyle">@style/BottomDialogAnimation</item></style>
<!-- ActionSheet进出动画 -->
<style name="BottomDialogAnimation" parent="@android:style/Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/bottom_dialog_in</item>
<item name="android:windowExitAnimation">@anim/bottom_dialog_exit</item></style>
//第三步 在drawable下新建两个动画文件bottom_dialog_in.xml,bottom_dialog_exit.xml。
//bottom_dialog_in.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromYDelta="100%"
android:toYDelta="0" />
//bottom_dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromYDelta="0"
android:toYDelta="100%" />
//第四步 Activity里使用,加载自定义的布局,初始化布局的控件,为两个TextView设置点击事件,获取当前dialog所在的窗体,为myDialog设置位置属性,以及宽和高,再显示对话框。
dialog = new Dialog(this, R.style.BottomDialogStyle);
//填充对话框的布局
view = LayoutInflater.from(this).inflate(R.layout.dialog, null);
//初始化控件
TextView fromAlbum = (TextView) view.findViewById(R.id.from_album_text);
TextView fromSystem = (TextView) view.findViewById(R.id.from_system_text);
fromAlbum.setOnClickListener(Main4Activity.this);
fromSystem.setOnClickListener(this);
//将布局设置给Dialog
dialog.setContentView(view);
//获取当前Activity所在的窗体
Window dialogWindow = dialog.getWindow();
//设置Dialog从窗体底部弹出
dialogWindow.setGravity(Gravity.BOTTOM);
//获得窗体的属性
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//这个*0.95就是给这个窗体设置弹出大小,不设置就默认为宽度最大
// lp.width = (int) (getWallpaperDesiredMinimumWidth());
lp.width = (int) (getWallpaperDesiredMinimumWidth()*0.95);
lp.y = 20; //设置Dialog距离底部的距离
dialogWindow.setAttributes(lp); //将属性设置给窗体
dialog.show();//显示对话框
//关闭对话框
dialog.dismiss();
//———————————————————————–完————————————————————————————
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118341.html