Android 自定义dialog类
首先定制style样式 styles.xml 加入自定义样式
<style name="CustomLoadingDialog">
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">true</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<item name="android:windowBackground">@color/transparent</item><!--背景透明-->
<item name="android:background">@color/transparent</item>
<item name="android:backgroundDimEnabled">true</item><!--模糊-->
<item name="android:backgroundDimAmount">0.6</item>
</style>
在添加视图页面 在 res.layout 下加入loading_dialog.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:alpha="255"
android:background="@drawable/bg_white_radius"
android:gravity="center"
android:orientation="vertical"> <ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <TextView
android:id="@+id/content_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/loading_text"
android:textColor="@color/bg_primary"
android:textSize="14sp" /> </LinearLayout>
现在开始写自定义视图LoadingView
class LoadingView(context: Context, content: String) :
Dialog(context, R.style.CustomLoadingDialog) { init {
setContentView(R.layout.loading_dialog)
content_view.text = content
setCanceledOnTouchOutside(true)
backgroundAlpha(1f) val dm = context.resources.displayMetrics
window?.attributes?.width = (dm.widthPixels * 0.6).toInt()
window?.attributes?.height = (dm.widthPixels * 0.6 * 0.6).toInt()
setCancelable(false)
} override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
when (keyCode) {
KeyEvent.KEYCODE_BACK -> {
if (isShowing) {
dismiss()
}
}
}
return super.onKeyDown(keyCode, event)
} override fun dismiss() {
if(isShowing){
super.dismiss()
}
} override fun setTitle(title: CharSequence?) {
content_view.text = title
} private fun backgroundAlpha(alpha: Float) {
window?.attributes?.alpha = alpha
} }
创建一个单例管理类,方便使用
class LoadingManager private constructor(){
    private var mContext:Context? = null
    private var loadingView: LoadingView? = null
    companion object {
        val instance: LoadingManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
            LoadingManager()
        }
    }
    fun createDialog(context: Context, title: String): LoadingView {
        if(mContext == context){
            if(loadingView != null){
                loadingView?.setTitle(title)
                return loadingView!!
            }
        }
        loadingView = null
        mContext = context
        loadingView = LoadingView(mContext!!, title)
        return loadingView!!
    }
}
使用
//显示加载中视图
LoadingManager.instance.createDialog(this,"登录中").show()
//关闭视图
LoadingManager.instance.createDialog(this,"").dismiss()
Android 自定义dialog类的更多相关文章
- Android 自定义Dialog类,并在Activity中实现按钮监听。
		实际开发中,经常会用到Dialog,比如退出时候会弹出是否退出,或者还有一些编辑框也会用Dialog实现,效果图如下: 开发中遇到的问题无非在于如果在Activity中监听这个Dialog中实现的 ... 
- Android自定义 Dialog 对话框
		Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ... 
- Android—自定义Dialog
		在 Android 日常的开发中,Dialog 使用是比较广泛的.无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框. 而我们去看一下原生的对话框,虽然随着 ... 
- Android自定义Dialog
		Android开发过程中,常常会遇到一些需求场景——在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作, 如退出登录时的弹窗,让用户选择“退出”还是“取消”等操作. Android系统提 ... 
- Android自定义Dialog(美化界面)
		前言:在做项目的时候,发现dialog界面太丑陋,从csdn上下载了一份自定义dialog的源码,在他的基础上对界面进行美化...有需要的朋友可以直接拿走 效果图如下: 主要代码: /** * 自定义 ... 
- Android自定义Dialog及其布局
		实际项目开发中默认的Dialog样式无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件. 上效果图: 自定义Dialog,LogoutDialog: 要将自定义布局传入构造函数中, ... 
- android 自定义Dialog背景透明及显示位置设置
		先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog ... 
- android 自定义Dialog去除黑色边框
		在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式: <style name="MyDial ... 
- Android 自定义Dialog 去除阴影
		自定义Dialog中添加下列代码: window.clearFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
随机推荐
- 使用DOM4J生成XML文档
			package xml; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; imp ... 
- iOS下JS与原生的交互一
			本篇主要讲的是UIWebView和JS的交互,在下一节会有wkWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/9144110.html JS调用原生OC ... 
- spring boot 环境配置(profile)切换
			Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ... 
- spring boot rest 接口集成 spring security(2) - JWT配置
			Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ... 
- BZOJ 2285 [Sdoi2011]保密
			题解: 求比值用分数规划,单个求太慢了套整体二分 然后求二分图最小割 // luogu-judger-enable-o2 #include<iostream> #include<cs ... 
- spark与Scala版本对应问题
			在阅读一些博客和资料中,发现安装spark与Scala是要严格遵守两者的版本对应关系,如果版本不对应会在之后的使用中出现许多问题. 在安装时,我们可以在spark的官网中查到对应的Scala版本号,如 ... 
- eclipse导入tomcat源码
			我的开发环境:windows7 64位 一.官网下载tomcat源码.在此奉上一站地址:http://archive.apache.org/dist/tomcat/: 二.编译源码生成.jar文件: ... 
- JavaScript 2019.3.15
			方法名.call(对象)可以切换方法调用的对象 参数数量 基本数据类型 typeof无法更细致的区分引用类型(全是object) = 
- VMware  DRS部分知识点
			主机添加到集群中,不需要维护模式(有虚拟机开机状态时也可以添加进去). 主机从集群中移除,需要主机进入维护模式. HA和DRS 全自动 当设置虚拟机必须在主机上时 DRS优先级大于HA 就算主机挂了H ... 
- DDL&DML
			SQL语言的DDL和DML DDL:数据定义语言它是用来定义 管理数据对象(数据库和数据表)的. create(创建),alter(修改),drop(删除) 一.创建数据库create datebas ... 
