dialog 订阅
DIALOG系统是目前世界上规模最大、影响最广泛的综合性商业信息检索系统,覆盖各行业的900多个数据库,其数据类型主要有4种,即文献型、数值型、名录字典型、全文型,涉及40多个语种7000多种期刊。Dialog收录的信息涉及的专业范围广泛,按涉及学科的领域被分为20类。信息总量约15TB,共有14亿条记录,文档的专业范围涉及综合性学科、自然科学、应用科学和工艺学、社会科学和人文科学、商业经济和时事报导等诸多领域。在Dialog系统资源中,各种类型的商业性数据库多达400个左右,占有举足轻重的地位。存储的文献型和非文献型记录占世界各检索系统数据库文献总量的一半以上。Dialog系统在全球六个大洲100多个国家保有两万五千位客户。 展开全文
DIALOG系统是目前世界上规模最大、影响最广泛的综合性商业信息检索系统,覆盖各行业的900多个数据库,其数据类型主要有4种,即文献型、数值型、名录字典型、全文型,涉及40多个语种7000多种期刊。Dialog收录的信息涉及的专业范围广泛,按涉及学科的领域被分为20类。信息总量约15TB,共有14亿条记录,文档的专业范围涉及综合性学科、自然科学、应用科学和工艺学、社会科学和人文科学、商业经济和时事报导等诸多领域。在Dialog系统资源中,各种类型的商业性数据库多达400个左右,占有举足轻重的地位。存储的文献型和非文献型记录占世界各检索系统数据库文献总量的一半以上。Dialog系统在全球六个大洲100多个国家保有两万五千位客户。
信息
服务项目
各种类型信息检索、定题服务、原文定购(Email、FAX或邮寄)等
类    型
文献型、数值型、名录字典型、全文型
总    部
美国加利福利亚州的帕洛阿尔托
外文名
DIALOG
定    位
商业信息检索系统
领    域
综合性学科、自然科学、应用科学和工艺学等
DIALOG系统简介
其中心设在美国加利福利亚州的帕洛阿尔托(Palo Alto)市,在27个国家有直接业务,为103个国家的用户提供服务。其提供的服务项目有:各种类型信息检索、定题服务、原文定购(Email、FAX或邮寄)等利用DIALOG系统,可进行项目查新、文献调研、课题立项、申报专利、了解市场动态和竞争对手、新产品开发、公司的背景情况、经济预测等等信息。DIALOG于1972年正式开始提供商用联机服务,是世界上最大、历史最悠久的联机检索系统,已有30多年的全球联机检索服务历史。
收起全文
精华内容
下载资源
问答
  • Dialog

    千次阅读 2007-10-25 01:42:00
    原贴:http://blog.chinaunix.net/u/13329/showart.php?id=89835 Dialog
    原贴:http://blog.chinaunix.net/u/13329/showart.php?id=89835

    Dialog
     
     
    [From]http://www.itcnw.com/Article/Net/Linux/200511/77321.html


       dialog是个shell scripts用的,事实上当您下载Linux Kernel时,里面有个 
       
      scripts/lxdialog目录,其实那就是dialog原始码,只是Linux kernel为了避 
       
      免与原有dialog相冲突,将名字修改为lxdialog。当您使用"make menuconfig" 
       
      时,便是在用dialog这套工具。另外,Slackware的安装程序,事实上也是用 
       
      dialog这套工具来做界面的。  
     
       
      您可以利用shell script来呼叫dialog,也可以利用perl来呼叫它,用以提供 
       
      较友善的使用者界面。  
     
       
      利用dialog这个工具,您可以在不需要写"艰深"的ncurses的程序的状况下,使 
       
      用Shell Script,完成很复杂的操作界面,大大减少产品开发时间。  
     
     
       
      您可以用"man dialog"来查它的使用方法。这里做一些dialog的使用及示范。  
     
       
      dialog --clear 
     
       
      整个萤幕会清除後离开  
     
       
      dialog --create-rc file 
     
       
      dialog支援动态规划,这个功能会产生一个样本。  
     
       
      dialog  [  --title  title  ]  [  --backtitle backtitle ] 
       
      [--clear ] [ --separate-output ] box-options 
     
       
      --title title 
     
       
      对话盒上的标题文字 
     
       
      --backtitle backtitle 
     
       
      桌面背景的标题  
     
       
      box-options 
     
       
      dialog目前提供了yes/no  box,  menu  box, input box, message box, text 
       
      box, info box, checklist box, radiolist box, 及gauge box共九种widget. 
     
       
      Exit Status 
     
       
      如果按下Yes或OK按键,则会返回0。No或Cancel会返回1。如果按下ESC或发生 
       
      错误,则会返回-1。  
     
       
      --yesno text height width 
     
       
      [foxman@foxman /]# dialog --title "hello" --backtitle "Dialog" 
       
      --yesno "Is everything okay" 20 60  
     
     
       
      --msgbox text height width 
     
       
      [foxman@foxman /]# dialog --title "hello" --backtitle "Dialog" 
       
      --msgbox "Is everything okay" 20 60  
     
     
       
      --infobox text height width 
     
       
      [foxman@foxman dialog]# dialog --title "hey" --backtitle "Dialog" 
       
      --infobox "Is everything okay?" 10 60  
     
       
      Infobox会在显示讯息後立即离开,在console的状况下,讯息会留下,但在X 
       
      Terminal下,由於X Terminal会立即将讯息清除,Screen Shot抓不到,因此这 
       
      里没有ScreenShot。您可以在console下测试。  
     
       
      --inputbox text height width [init] 
     
       
      [foxman@foxman dialog]# dialog --title "hey" --backtitle "Dialog" 
       
      --inputbox "Is everything okay?" 10 60 "yes"  
     
     
       
         
     
       
      --textbox file height width 
     
       
      [foxman@foxman copyright]# dialog --title "Array 30" --backtitle "All 
       
      For Chinese" --textbox array30 20 75  
     
     
       
      textbox很像是个简单的text viewer,它会显示档案中的文字。  
     
       
      --menu text height width menu-height [ tag item ] ... 
     
       
      [foxman@foxman dialog]# dialog --title "Menu Example" --menu "MENU" 
       
      20 60 4 tag1 " item1" tag2 "item2" tag3 "item3" tag4 "item4"  
     
     
       
         
     
       
      --checklist text height width list-height [ tag item status ] 
       
      ... 
     
       
      [foxman@foxman dialog]# dialog --title "CheckList Example" 
       
      --checklist "Check List" 20 60 4 tag1 "item1" on tag2 "item2" off 
       
      tag3 "item3" on tag4 "item4" off  
     
     
       
      --radiolist text height width list-height  [ tag  item status  
       
      ] ... 
     
       
      [foxman@foxman dialog]# dialog --title "RadioList Example" 
       
      --radiolist "Radio List" 20 60 4 tag1 "item1" on tag2 "item2" off 
       
      tag3 "item3" on tag4 "item4" off  
     
     
       
      --gauge text height width percent 
     
       
      [foxman@foxman dialog]# dialog --title "Installation" --backtitle 
       
      "Star Linux" --gauge "Linux Kernel"  10 60 50  
     
     
       
      gauge widget在启动後,会从stdin读取percent进来,读到EOF时结束。  
     
     
       
      配合Shell Script进阶使用 
     
       
      单单知道每个功能如何使用是还不够的,一般您要需要知道如何配合Script来 
       
      使用。  
       
      会需要互动的有yesno、inputbox、menu、checklist、radiolist、gauge。  
     
       
      yesno 
     
       
      范例  
       
      #!/bin/sh  
     
       
      DIALOG=dialog  
     
       
      if $DIALOG --title "WCW v.s. NWO" --backtitle "Wrestling"/  
       
                 --yesno "Are you ready to rumble?" 5 60; then  
       
        echo "Yeahhhhh"  
       
      else  
       
        echo "Nap..."  
       
      fi  
     
       
      inputbox 
     
       
      范例  
       
      #!/bin/sh  
     
       
      DIALOG=dialog  
     
       
      if $DIALOG --title "The future is here" /  
       
                 --inputbox "Where do you want to go tomorrow?" /  
       
                 10 75 "Penguin" 2>my_own_destiny  
       
      then  
       
        way=`cat my_own_destiny`  
       
        echo "My way is $way"  
       
      else  
       
        echo "freak out"  
       
      fi  
     
       
      menu 
     
       
      #!/bin/sh  
     
       
      if dialog --title "title" /  
       
                --menu "MENU" 20 60 14 /  
       
                tag1 "item1" tag2 "item2" 2>select  
       
      then  
       
        selection=`cat select`  
       
        echo "my selection is $selection"  
       
      else  
       
        echo "go"  
       
      fi  
     
       
      checklist 
     
       
      #!/bin/sh  
     
       
      if dialog --title "title" /  
       
                --checklist "checklist" 20 60 14 /  
       
                tag1 "item1" on tag2 "item2" off 2>select  
       
      then  
       
        selections=`cat select`  
     
       
        echo "My selections are:"  
       
        for i in $selections ; do  
       
          echo $i  
       
        done  
     
       
      else  
       
        echo "go"  
       
      fi  
     
       
      radiolist 
     
       
      #!/bin/sh  
     
       
      if dialog --title "title" /  
       
                --radiolist "checklist" 20 60 14 /  
       
                tag1 "item1" on tag2 "item2" off 2>select  
       
      then  
       
        selection=`cat select`  
       
        echo "My selection is $selection"  
       
      else  
       
        echo "go"  
       
      fi  
     
       
      gauge 
     
       
      到目前为止,gauge似乎都一直有点问题,文件上也写说是有点问题,所附的范 
       
      例程序也是无法使用,不建议您使用(我自己也玩不出来,你如果有试出来,请 
       
      来信告诉我)。
    创建于: 2006-03-23 16:53:33,修改于: 2006-03-23 16:53:33,已浏览230次,有评论0条
     
    展开全文
  • el-dialog 拖拽及居中效果

    万次阅读 2019-11-28 16:39:04
    el-dialog拖拽及改变大小 1.新建directive.js import Vue from 'vue'; // v-dialogDrag: 弹窗拖拽 Vue.directive('dialogDrag', { bind(el) { //备注:可以改变类名使其它元素也实现拖拽效果 //鼠标...

    博客地址:http://www.globm.top/blog/1/detail/35
    el-dialog拖拽及改变大小

    1.新建directive.js

    import Vue from 'vue';
    

    只能在窗口内拖拽

    // v-dialogDrag: 弹窗拖拽
    Vue.directive('dialogDrag', {
      bind (el) {
        // 备注:可以改变类名使其它元素也实现拖拽效果
        // 鼠标点击拖拽区域
        const dialogHeaderEl = el.querySelector('.el-dialog__header')
        // 被拖拽元素主题
        const dragDom = el.querySelector('.el-dialog')
        dialogHeaderEl.style.cursor = 'move'
    
        // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
        const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
    
        dialogHeaderEl.onmousedown = (e) => {
          // 鼠标按下,计算当前元素距离可视区的距离
          const disX = e.clientX - dialogHeaderEl.offsetLeft
          const disY = e.clientY - dialogHeaderEl.offsetTop
    
          const screenWidth = document.body.clientWidth // body当前宽度
          const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
    
          const dragDomWidth = dragDom.offsetWidth // 对话框宽度
          const dragDomheight = dragDom.offsetHeight // 对话框高度
    
          const minDragDomLeft = dragDom.offsetLeft
          const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth
    
          const minDragDomTop = dragDom.offsetTop
          const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight
    
          // 获取到的值带px 正则匹配替换
          let styL, styT
    
          // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
          if (sty.left.includes('%')) {
            // eslint-disable-next-line no-useless-escape
            styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
            // eslint-disable-next-line no-useless-escape
            styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
          } else {
            styL = +sty.left.split('px')[0]
            styT = +sty.top.split('px')[0]
          }
    
          document.onmousemove = function (e) {
            // 通过事件委托,计算移动的距离
            let left = e.clientX - disX
            let top = e.clientY - disY
    
            // 边界处理
            if (-(left) > minDragDomLeft) {
              left = -(minDragDomLeft)
            } else if (left > maxDragDomLeft) {
              left = maxDragDomLeft
            }
    
            if (-(top) > minDragDomTop) {
              top = -(minDragDomTop)
            } else if (top > maxDragDomTop) {
              top = maxDragDomTop
            }
    
            // 移动当前元素
            dragDom.style.transform = 'none'
            dragDom.style.left = `${left + styL}px`
            dragDom.style.top = `${top + styT}px`
    
            // 将此时的位置传出去
            // binding.value({x:e.pageX,y:e.pageY})
          }
    
          document.onmouseup = function () {
            document.onmousemove = null
            document.onmouseup = null
          }
        }
      }
    })
    

    可以移出窗口

    // v-dialogDrag: 弹窗拖拽
    Vue.directive('dialogDrag', {
        bind(el) {
        //备注:可以改变类名使其它元素也实现拖拽效果
        	//鼠标点击拖拽区域
            const dialogHeaderEl = el.querySelector('.el-dialog__header');
            //被拖拽元素主题
            const dragDom = el.querySelector('.el-dialog');
            dialogHeaderEl.style.cursor = 'move';
    
            // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
            const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
    
            dialogHeaderEl.onmousedown = (e) => {
                // 鼠标按下,计算当前元素距离可视区的距离
                const disX = e.clientX - dialogHeaderEl.offsetLeft;
                const disY = e.clientY - dialogHeaderEl.offsetTop;
    
                // 获取到的值带px 正则匹配替换
                let styL, styT;
    
                // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
                if(sty.left.includes('%')) {
                    // eslint-disable-next-line no-useless-escape
                    styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
                    // eslint-disable-next-line no-useless-escape
                    styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
                }else {
                    styL = +sty.left.split('px')[0];
                    styT = +sty.top.split('px')[0];
                }
    
                document.onmousemove = function (e) {
                    // 通过事件委托,计算移动的距离
                    const l = e.clientX - disX;
                    const t = e.clientY - disY;
    
                    // 移动当前元素
                    dragDom.style.left = `${l + styL}px`;
                    dragDom.style.top = `${t + styT}px`;
    
                    //将此时的位置传出去
                    //binding.value({x:e.pageX,y:e.pageY})
                };
    
                document.onmouseup = function () {
                    document.onmousemove = null;
                    document.onmouseup = null;
                };
            }
        }
    })
    

    弹窗宽度拖大 拖小

    // v-dialogDragWidth: 弹窗宽度拖大 拖小
    Vue.directive('dialogDragWidth', {
        bind(el, binding) {
            const dragDom = binding.value.$el.querySelector('.el-dialog');
    
            el.onmousedown = (e) => {
    
                // 鼠标按下,计算当前元素距离可视区的距离
                const disX = e.clientX - el.offsetLeft;
    
                document.onmousemove = function (e) {
                    e.preventDefault(); // 移动时禁用默认事件
    
                    // 通过事件委托,计算移动的距离
                    const l = e.clientX - disX;
                    dragDom.style.width = `${l}px`;
                };
    
                document.onmouseup = function () {
                    document.onmousemove = null;
                    document.onmouseup = null;
                };
            }
        }
    })
    
    

    2.在main.js中引入directive.js
    3.在el-dialog标签的开始位置加入v-dialogDrag或 v-dialogDragWidth就可以实现相应的效果

    el-dialog居中显示效果

    // 推荐直接使用js实现
    this.$nextTick(_ => {
      this.$refs.dialog.style.marginTop
       = `calc((100vh${this.$refs.dialog.clientHeight}px) / 2)`
    })
    
    //配合dialog自带属性实现效果,不建议使用,固定定位元素受动画影响
    .el-dialog{
        transform: translateY(-50%);
        margin-top: 0!important;
        top: 50%;
    }
    
    //使用弹性布局,兼容性较差
    .el-dialog{
        display: flex;
        flex-direction: column;
        margin:0 !important;
        position:absolute;
        top:50%;
        left:50%;
        transform:translate(-50%,-50%);
        /*height:600px;*/
        max-height:calc(100% - 30px);
        max-width:calc(100% - 30px);
    }
    .el-dialog .el-dialog__body{
        flex:1;
        overflow: auto;
    }
    
    展开全文
  • 今天,在做Element+Vue项目时遇到一个需求:甲方要求在Dialog打开状态下,点击该Dialog以外的区域会导致该Dialog关闭;正确的状态应该是只有在点击关闭按钮,或者是Dialog内的其他操作性按钮才能使得Dialog的状态...

    需求描述

    今天,在做Element+Vue项目时遇到一个需求:甲方要求在Dialog打开状态下,点击该Dialog以外的区域会导致该Dialog关闭;正确的状态应该是只有在点击关闭按钮,或者是Dialog内的其他操作性按钮才能使得Dialog的状态变为关闭。

    问题分析

    之所以会产生这种问题,是因为elementUi在对Dialog组件做初始化的时候,默认让该Dialog在点击组件以外区域会导致该组件关闭,所以elementUI 一定会将该属性暴露出来让开发人员进行配置。
    通过查询ElementUI的官方文档,发现在Dialog下有个‘close-on-click-modal’属性,该属性默认值为‘True’,作用为:是否可以通过点击 modal 关闭 Dialog。
    所以,通过设置Dialog下的close-on-click-modal属性为‘false’,即可解决该问题。

    问题解决方式

    • 解决方式一 : 将Dialog下的close-on-click-modal属性改为‘false’。
      • 需要注意的是: 在使用close-on-click-modal属性时,必须在该属性前加“:”。
    <el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button>
    
    <el-dialog
      title="提示"
      :visible.sync="dialogVisible"
      width="30%"
      :close-on-click-modal='false'>
      <span>这是一段信息</span>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
      </span>
    </el-dialog>
    
    <script>
      export default {
        data() {
          return {
            dialogVisible: false
          };
        }
      };
    </script>
    
    
    展开全文
  • 安卓dialog的使用+如何自定义dialog

    万次阅读 多人点赞 2018-06-19 22:40:28
    回到正题,看到产品给我的设计图,有辣么多的自定义的dialog,发现之前自己只会系统自带的dialog,但是这样根本满足不了产品的需求,所以自己上周好好总结下,然后把产品给的需求完成。//哇哇哇,项目写不完了 什么...

    吐槽

    哇哇哇,刚写一半win10给我蓝屏了,心塞塞,以后写一点保存一点。回到正题,看到产品给我的设计图,有辣么多的自定义的dialog,发现之前自己只会系统自带的dialog,但是这样根本满足不了产品的需求,所以自己上周好好总结下,然后把产品给的需求完成。//哇哇哇,项目写不完了

    什么叫dialog

    简单来说就是一句话:
    弹出一个窗口,提示用户自己去选择,去提示,去分类的一些内容。
    安卓自带的dialog有三种:
    这里写图片描述
    - AlertDialog—-普通的提示对话框
    - ProgressDialog–进度条对话
    - DatePickerDialog/TimePickerDialog–日期对话框/时间对话框

    所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自Dialog,其他的几个类均继承自AlterDialog。

    系统自带的dialog基本上用AlertDialog类
     AlertDialog继承自Dialog类,对于Android内置的AlterDialog,它可以包含一个标题、一个内容消息或者一个选择列表、最多三个按钮。而创建AlterDialog推荐使用它的一个内部类AlterDialog.Builder创 建。使用Builder对象,可以设置AlterDialog的各种属性,最后通过Builder.create()就可以得到AlterDialog对 象,如果只是还需要显示这个AlterDialog,一般可以直接使用Builder.show()方法,它会返回一个AlterDialog对象,并且 显示它。
    //说这么多,还不如直接看下如何用

    下面我会讲三个层次的dialog的使用:

    • 简单的系统dialog调用//就是简单的系统dialog的调用
    • 半自定义的dialog//就是改变一些基础属性
    • 完全自定义dialog//自定义dialog类,自己写界面,点击事件
      ##简单的系统dialog
      简单的dialog也分好多种,但是我只说AlertDialog类的
      ###普通对话框
      这个就是最普通的那种,让你选择正确或者错误,也可以选择中立,这个是最常见的那种
      这里写图片描述
      用法很简单
    • 第一步:new个AlertDialog.Builder
    • 第二步:设置dialog的图标,文字,提示信息
    • 第三步:设置不同选择的点击事件
    • 第四步:显示dialog
     /**
         * 普通dialog
         */
        private void showAlterDialog(){
            final AlertDialog.Builder alterDiaglog = new AlertDialog.Builder(MainActivity.this);
            alterDiaglog.setIcon(R.drawable.icon);//图标
            alterDiaglog.setTitle("简单的dialog");//文字
            alterDiaglog.setMessage("生存还是死亡");//提示消息
            //积极的选择
            alterDiaglog.setPositiveButton("生存", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了生存",Toast.LENGTH_SHORT).show();
                }
            });
            //消极的选择
            alterDiaglog.setNegativeButton("死亡", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了死亡",Toast.LENGTH_SHORT).show();
                }
            });
           //中立的选择
            alterDiaglog.setNeutralButton("不生不死", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了不生不死",Toast.LENGTH_SHORT).show();
                }
            });
    
            //显示
            alterDiaglog.show();
        }

    列表对话框

    直接看图吧
    这里写图片描述
    这个和普通的dialog差不多,只不过是从中数组选择一个确定点击事件

     /**
         * 列表Dialog
         */
        private void showListDialog(){
            final String[] items = {"我是1","我是2","我是3"};
            AlertDialog.Builder listDialog = new AlertDialog.Builder(MainActivity.this);
            listDialog.setIcon(R.drawable.icon);//图标
            listDialog.setTitle("我就是个列表Dialog");
            listDialog.setItems(items, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了"+items[which],Toast.LENGTH_SHORT).show();
                }
            });
            listDialog.show();
        }

    单选对话框

    它和列表对话框区别是前面有选择的圆点
    也是一样的
    这里写图片描述

     /**
         * 单选Dialog
         */
        int choice;
        private void showSingDialog(){
            final String[] items = {"我是1","我是2","我是3"};
            AlertDialog.Builder singleChoiceDialog = new AlertDialog.Builder(MainActivity.this);
            singleChoiceDialog.setIcon(R.drawable.icon);
            singleChoiceDialog.setTitle("我是单选Dialo");
            //第二个参数是默认的选项
            singleChoiceDialog.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    choice= which;
                }
            });
            singleChoiceDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if (choice!=-1){
                        Toast.makeText(MainActivity.this,
                                "你选择了" + items[choice],
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
            singleChoiceDialog.show();
        }

    多选对话框

    在单选的基础上加了多选这个,就是选择的函数不一样
    这里写图片描述

     /**
         * 多选对话框
         */
        ArrayList<Integer> choices= new ArrayList<>();
        private void showMultiChoiceDialog(){
            final String[] items = {"我是1","我是2","我是3"};
            //设置默认选择都是false
            final boolean initchoices[] = {false,false,false};
            choices.clear();
            AlertDialog.Builder multChoiceDialog = new AlertDialog.Builder(MainActivity.this);
            multChoiceDialog.setIcon(R.drawable.icon);
            multChoiceDialog.setTitle("我是个多选Dialog");
            multChoiceDialog.setMultiChoiceItems(items, initchoices, new DialogInterface.OnMultiChoiceClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    if (isChecked){
                        choices.add(which);
                    }else {
                        choices.remove(which);
                    }
                }
            });
            multChoiceDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    int size = choices.size();
                    String str = "";
                    for(int i = 0;i<size;i++){
                        str+=items[choices.get(i)]+"";
                    }
                    Toast.makeText(MainActivity.this,
                            "你选中了" + str,
                            Toast.LENGTH_SHORT).show();
                }
            });
            multChoiceDialog.show();
        }

    等待对话框

    等待Dialog具有屏蔽其他控件的交互能力
    @setCancelable 为使屏幕不可点击,设置为不可取消(false) 
    下载等事件完成后,主动调用函数关闭该Dialog
    这里写图片描述 

     private void showProgressDialog(){
            final int MAX = 100;
            final ProgressDialog progressDialog = new ProgressDialog(this);
            progressDialog.setTitle("我是个等待的Dialog");
            progressDialog.setMessage("等待中");
            progressDialog.setIndeterminate(true);
            progressDialog.setCancelable(false);
            progressDialog.show();
        }

    进度条对话框

    就是和那些app上一样,简单的一个等待的框
    这里写图片描述

    /**
         * 进度条Dialog
         */
        private void showWhiteDialog(){
            /* @setProgress 设置初始进度
             * @setProgressStyle 设置样式(水平进度条)
             * @setMax 设置进度最大值
             */
            final int Max = 100;
            final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setProgress(0);
            progressDialog.setIcon(R.drawable.icon);
            progressDialog.setTitle("我是一个进度条Dialog");
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.setMax(Max);
            progressDialog.show();
            /**
             * 开个线程
             */
            new Thread(new Runnable() {
                @Override
                public void run() {
                    int p = 0;
                    while (p<Max){
                        try {
                            Thread.sleep(100);
                            p++;
                            progressDialog.setProgress(p);
                        }catch (InterruptedException e){
                            e.printStackTrace();
                        }
                    }
                    progressDialog.cancel();//达到最大就消失
                    }
    
            }).start();
        }

    半自定义对话框

    就是根据一些属性来自定义dialog,也可以添加自己的布局

    1控制不同普通的dialog的位置,大小,透明度

    这里写图片描述
    在不同的dialog的下面添加设置

     //自定义的东西
           //放在show()之后,不然有些属性是没有效果的,比如height和width
            Window dialogWindow = dialog.getWindow();
            WindowManager m = getWindowManager();
            Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
            WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
            // 设置高度和宽度
            p.height = (int) (d.getHeight() * 0.4); // 高度设置为屏幕的0.6
            p.width = (int) (d.getWidth() * 0.6); // 宽度设置为屏幕的0.65
    
            p.gravity = Gravity.TOP;//设置位置
    
            p.alpha = 0.8f;//设置透明度
            dialogWindow.setAttributes(p);

    整体的代码:

     /**
         * 自定义1 控制普通的dialog的位置,大小,透明度
         * 在普通的dialog.show下面添加东西
         */
        private void DiyDialog1(){
            AlertDialog.Builder alterDiaglog = new AlertDialog.Builder(MainActivity.this);
            alterDiaglog.setIcon(R.drawable.icon);//图标
            alterDiaglog.setTitle("简单的dialog");//文字
            alterDiaglog.setMessage("生存还是死亡");//提示消息
            //积极的选择
            alterDiaglog.setPositiveButton("生存", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了生存",Toast.LENGTH_SHORT).show();
                }
            });
            //消极的选择
            alterDiaglog.setNegativeButton("死亡", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了死亡",Toast.LENGTH_SHORT).show();
                }
            });
    
            alterDiaglog.setNeutralButton("不生不死", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(MainActivity.this,"点击了不生不死",Toast.LENGTH_SHORT).show();
                }
            });
            AlertDialog dialog = alterDiaglog.create();
    
            //显示
            dialog.show();
            //自定义的东西
           //放在show()之后,不然有些属性是没有效果的,比如height和width
            Window dialogWindow = dialog.getWindow();
            WindowManager m = getWindowManager();
            Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
            WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
            // 设置高度和宽度
            p.height = (int) (d.getHeight() * 0.4); // 高度设置为屏幕的0.6
            p.width = (int) (d.getWidth() * 0.6); // 宽度设置为屏幕的0.65
    
            p.gravity = Gravity.TOP;//设置位置
    
            p.alpha = 0.8f;//设置透明度
            dialogWindow.setAttributes(p);
        }

    自定义简单dialog的布局

    把自己写的xml加载进去
    这里写图片描述
    第一步:自定义布局
    自己定义dialog_1.xml

    <?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="100dp"
            android:layout_height="100dp"
            android:layout_centerInParent="true"
            android:background="#ed093a">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:text="自定义加强版的dialog"
                android:textColor="#fff"/>
        </LinearLayout>
    </RelativeLayout>

    第二步:在主活动里面设置dialog
    然后把这个布局扔进去

        /**
         * 自定义dialog2 简单自定义布局
         */
        private void DiyDialog2() {
            AlertDialog.Builder alterDiaglog = new AlertDialog.Builder(MainActivity.this,R.style.MyDialog);
            alterDiaglog.setView(R.layout.dialog_1);//加载进去
            AlertDialog dialog = alterDiaglog.create();
            //显示
            dialog.show();
            //自定义的东西
        }

    完全自定义dialog

    重要来到了最重头戏了,然后自定义dialog然后满足产品的需求,你只需要按照如下步骤来:
    这里写图片描述
    1.在values/styles.xml新建一个样式MyDialog

    <style name="MyDialog" parent="android:Theme.Dialog">
        <!-- 背景颜色及透明程度 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 是否半透明 -->
        <item name="android:windowIsTranslucent">false</item>
        <!-- 是否没有标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 是否背景模糊 -->
        <item name="android:backgroundDimEnabled">false</item>
        <!-- 设置背景模糊的透明度-->
        <item name="android:backgroundDimAmount">0.5</item>
    </style>

    2.新建一个MyDialog继承Dialog类

    public class MyDialog1 extends Dialog implements View.OnClickListener{
        //在构造方法里提前加载了样式
        private Context context;//上下文
        private int layoutResID;//布局文件id
        private int[] listenedItem;//监听的控件id
        public MyDialog1(Context context,int layoutResID,int[] listenedItem){
            super(context,R.style.MyDialog);//加载dialog的样式
            this.context = context;
            this.layoutResID = layoutResID;
            this.listenedItem = listenedItem;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //提前设置Dialog的一些样式
            Window dialogWindow = getWindow();
            dialogWindow.setGravity(Gravity.CENTER);//设置dialog显示居中
            //dialogWindow.setWindowAnimations();设置动画效果
            setContentView(layoutResID);
    
    
            WindowManager windowManager = ((Activity)context).getWindowManager();
            Display display = windowManager.getDefaultDisplay();
            WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.width = display.getWidth()*4/5;// 设置dialog宽度为屏幕的4/5
            getWindow().setAttributes(lp);
            setCanceledOnTouchOutside(true);//点击外部Dialog消失
            //遍历控件id添加点击注册
            for(int id:listenedItem){
                findViewById(id).setOnClickListener(this);
            }
        }
        private OnCenterItemClickListener listener;
        public interface OnCenterItemClickListener {
            void OnCenterItemClick(MyDialog1 dialog, View view);
        }
        //很明显我们要在这里面写个接口,然后添加一个方法
        public void setOnCenterItemClickListener(OnCenterItemClickListener listener) {
            this.listener = listener;
        }
    
    
        @Override
        public void onClick(View v) {
            dismiss();//注意:我在这里加了这句话,表示只要按任何一个控件的id,弹窗都会消失,不管是确定还是取消。
            listener.OnCenterItemClick(this,v);
        }
    }
    

    3.主活动继承自己写的dialog的接口,实现点击方法

    //定义一个自己的dialog
     private MyDialog1 myDialog1;
    //实例化自定义的dialog
      myDialog1 = new MyDialog1(this,R.layout.dialog_2,new int[]{R.id.dialog_btn});
      //绑定点击事件
     myDialog1.setOnCenterItemClickListener((MyDialog1.OnCenterItemClickListener) this);
     //显示
      myDialog1.show();
     //调用点击函数
     @Override
        public void OnCenterItemClick(MyDialog1 dialog, View view) {
            switch (view.getId()){
                case R.id.dialog_btn:
                    Toast.makeText(getApplicationContext(),"点击了",Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
    
        }  
    

    总结

    最近项目还是没进度哇哇哇,心塞塞,准备开始弄个安卓游戏项目,要学一大堆东西。
    https://github.com/sakurakid/DialogDemo这个的git地址,希望对别人有帮助 
     

    展开全文
  • DialogDialogActivity

    千次阅读 2016-05-25 17:29:18
    1 dialogactivity 以dialog形式弹出的对话框,可用于需要弹出的dialog比较复杂布局的情况,使用时,只需在manifest中为该activity设置为dialog主题,也可以对该主题进行重写相关属性,如下: ...
  • Android常用对话框大全——Dialog

    万次阅读 多人点赞 2017-01-18 20:53:20
    今天就来谈谈开发中经常用的到的一个控件——Dialog,对话框一般我们就用来提示一些信息给用户,让用户自主选择,或者在一些操作不可逆的情况下我们提示用户是否继续操作,下面就让我们一起来学习吧。老司机发车啦…...
  • Android Dialog库内置Dialog以及各种动画.支持自定义Dialog和动画
  • 安卓自定义Dialog的实现

    万次阅读 多人点赞 2019-02-16 09:52:11
    安卓自定义Dialog
  • Android Dialog

    万次阅读 2018-12-12 15:36:16
    第一步创建UpdateDialog.class package ... import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.Wi...
  • 实现一个弹框有两种方式,一种是继承于 Dialog 来定义一个子类实现弹框效果,一种是创建一个 新的 StatelessWidget(页面)。 实际上 Flutter 提供的 Dialog 也是继承于 StatelessWidget而实现的。 1 自定义 Dialog ...
  • 自定义Dialog样式,修改Dialog背景

    千次阅读 2019-04-23 10:40:01
    final Dialog dialog = new Dialog(this); View view = LayoutInflater.from(this).inflate(R.layout.xxx, null); //自定义样式 TextView btn = view.findViewById(R.id.finish_btn); ...
  • 自定义Dialog

    千次阅读 2017-05-24 20:12:09
    在自定义Dialog之前,首先推荐一篇Dialog文章,其拓展性特别强: https://github.com/jiang111/IndicatorDialog在开发中,有时候会遇到使用Dialog的时候,弹出Dialog时,背景的颜色变化总是时一层黑色,这样的解决方案只是...
  • 话说之前写过一遍Android中常见的几种Dialog的介绍和基本用法,但是没有讲到实际项目中最常用到的自定义dialog。正好,马上项目要添加新模块,看到里面有用到自定义dialog部分,于是乎趁着最近闲于时间就提前研究下...
  • EasyUI中dialog与modalDialog弹窗

    千次阅读 2019-05-16 14:59:32
    在使用最外层弹框modalDialog时,一个页面只能使用一个,如果存在两个modalDialog弹窗会导致其中一个在提交的时候报错。 因为系统不知道具体要关掉的哪个弹窗。但是需求中有需要两个弹窗怎么办? 我在项目中...
  • android 自定义Dialog页面加载中效果的进度条 Dialog 边角 Dialog 棱角
  • append-to-body 不填,则遮罩有问题 <el-dialog title="添加" append-to-body :visible.sync="dialogTableVisibleDis" > dialog内容 </el-dialog>
  • 点击dialog空白处禁止关闭dialog

    千次阅读 2018-04-24 11:23:15
    dialog.setCancelable(false); dialog 完整代码package com.developer.jim.wizard.views; import android.app.Activity; import android.app.DialogFragment; import android.graphics.Color; import ...
  • Dialog 的父组件的 position 值为 fixed或absolute或 relative 时,就会出现被蒙板遮住Dialog的情况。 例如父组件样式如下: position : fixed 点击X和 esc 不关闭dialog问题 错误写法 :visible=...
  • gtk dialog

    千次阅读 2015-10-20 15:04:59
    1. message dialog message dialog有四种类型,分别是info、warning、question、error,代码示例如下:#include void show_info(GtkWidget *widget, gpointer window) { GtkWidget *dialog; dialog = gtk_...
  • Android dialog 点击空白dialog不消失问题

    万次阅读 多人点赞 2016-05-03 15:46:53
    在使用dialog的时候可能会有这样的要求,比如说更换头像的时候,弹出一个dailog如下所示: 需要实现的功能是: (1)当用户选择拍照或者从相册选择时实现对应的功能。 (2)用户选择取消或者是点击屏幕空白部分时...
  • 自定义Dialog以及Dialog之间跳转

    千次阅读 2015-08-26 15:12:15
    自定义dialog dialog跳转样式 ps:这里实现可能不是最佳方案,因为我并没有去根据屏幕大小去设置dialog的大小效果 自定义dialog/** * Created by ${wj} , * on 2015/8/11 0011. */ public class ...
  • Dialog与DialogFragment

    万次阅读 2018-06-21 14:14:48
    自定义Dialog 重新定义主题,一般父类为@android:style/Theme.Dialog(这里踩过坑父类写成Theme.AppCompat.Light.NoActionBar弹出的Dialog一直是全屏的),常用的属性如下: &lt;style name="MapDialogTheme...
  • dialog和popupwindow和activityDialog

    千次阅读 2015-08-10 20:00:13
    1,定义Dialog View view = inflater.inflate(R.layout.phone_dialog, null); final Dialog builder = new Dialog(this, R.style.ActionSheetDialogStyle); builder.setCanceledOnTouchOutside(true); builder.setC
  • 安卓自定义列表dialog

    千次阅读 2019-02-16 09:35:30
    这个形式也是最常用的,不过最近需要用到列表信息Dialog,原生的不光样式不能满足需求,而且是开发电视端的APP,需要对焦点进行特殊处理,所以就需要自定义Dialog 我们先来看一下系统自带的列表Dialog。 系统...
  • Dialog的详细使用

    万次阅读 2018-05-29 16:18:06
    1、自己虽然一直使用过dialog,但是一直都是复制、粘贴;不清楚dialog的具体用途,这次趁着有时间,总结一下具体用法。 当在自定义dialog时,其实原理时一样的,通过代码写一个view,然后将new的dialog添加上view...
  • 自定义dialog和弹出dialog的动画

    万次阅读 2015-10-15 22:01:02
    自定义dialog final Dialog dialog = new Dialog(ChartVisit.this); LayoutInflater inflater=getLayoutInflater(); final View dialogview=inflater.inflate(R.layout.layout_fragmen
  • easyUI Dialog

    千次阅读 2012-08-02 17:04:36
    从 $.fn.window.defaults继承,覆盖默认值 $.fn.dialog.defaults. dialog 是一个特殊的类型的window,它可以有一个工具栏在它的顶部和一个按钮栏在它的下面,默认dialog 只有唯一一个关闭按钮在它头部的右上角,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,489
精华内容 37,795
关键字:

dialog