53.android 简单的自定义加载弹窗

导读:本篇文章讲解 53.android 简单的自定义加载弹窗,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

//第一种 先上效果图,中间的+号小图片是一直旋转的。

53.android 简单的自定义加载弹窗

//第一步 首先在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();

 

//第二种 先上效果图

53.android 简单的自定义加载弹窗

//第一步 自定义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

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!