android弹窗_android弹窗显示图片 - CSDN
精华内容
参与话题
  • Android常见的三种弹框

    万次阅读 多人点赞 2019-08-14 14:42:03
    Android在开发中经常会遇到有弹框的需求。经常使用的有Dialog 弹框,Window弹框,Activity伪弹框这三种。 感谢http://sigechuizi.cn/article/107 今天主要是讲解Dialog的使用: Dialog继承Object,异步调用,不会...

    Android在开发中经常会遇到有弹框的需求。经常使用的有Dialog 弹框,Window弹框,Activity伪弹框这三种。

    感谢http://sigechuizi.cn/article/107

    今天主要是讲解Dialog的使用:

    Dialog继承Object,异步调用,不会阻塞UI线程。以下是对他的整体框架:

    最常用的还是AlertDialog.今天主要是讲他的用法。AlertDialog的用法也很简单

     

     setTitle :为对话框设置标题
     setIcon :为对话框设置图标
     setMessage:为对话框设置内容
     setView : 给对话框设置自定义样式
     setItems :设置对话框要显示的一个list,一般用于显示几个命令时
     setMultiChoiceItems :用来设置对话框显示一系列的复选框
     setSingleChoiceItems :用来设置对话框显示一系列的单选框
     setNeutralButton    :普通按钮
     setPositiveButton   :给对话框添加"Yes"按钮
     setNegativeButton :对话框添加"No"按钮
     create : 创建对话框
     show :显示对话框

    1.只显示标题和内容

    AlertDialog alertDialog1 = new AlertDialog.Builder(this)
            .setTitle("这是标题")//标题
            .setMessage("这是内容")//内容
            .setIcon(R.mipmap.ic_launcher)//图标
            .create();
    alertDialog1.show();

     

    2.有多个按钮

     

    setPositiveButton  设置一个确定按钮
    setNegativeButton  设置一个取消按钮
    setNeutralButton   设置一个普通按钮
    这三个按钮可以随意组合使用不冲突。
    AlertDialog alertDialog2 = new AlertDialog.Builder(this)
            .setTitle("这是标题")
            .setMessage("有多个按钮")
            .setIcon(R.mipmap.ic_launcher)
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是确定按钮", Toast.LENGTH_SHORT).show();
                }
            })
    
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是取消按钮", Toast.LENGTH_SHORT).show();
                }
            })
            .setNeutralButton("普通按钮", new DialogInterface.OnClickListener() {//添加普通按钮
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是普通按钮按钮", Toast.LENGTH_SHORT).show();
                }
            })
            .create();
    alertDialog2.show();

     

    3.一个列表

     

    setItems  里面写列表数据
    final String[] items3 = new String[]{"苍老湿", "小泽老湿", "波多野结衣老湿", "吉泽明步老湿"};//创建item
    AlertDialog alertDialog3 = new AlertDialog.Builder(this)
            .setTitle("选择您喜欢的老湿")
            .setIcon(R.mipmap.ic_launcher)
            .setItems(items3, new DialogInterface.OnClickListener() {//添加列表
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "点的是:" + items3[i], Toast.LENGTH_SHORT).show();
                }
            })
            .create();
    alertDialog3.show();

    4.单选列表

    setSingleChoiceItems  单选框列表
    final String[] items4 = new String[]{"苍老湿", "小泽老湿", "波多野结衣老湿", "吉泽明步老湿"};//创建item
    AlertDialog alertDialog4 = new AlertDialog.Builder(this)
            .setTitle("选择您喜欢的老湿")
            .setIcon(R.mipmap.ic_launcher)
            .setSingleChoiceItems(items4, 0, new DialogInterface.OnClickListener() {//添加单选框
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    index = i;
                }
            })
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是确定按钮" + "点的是:" + items4[index], Toast.LENGTH_SHORT).show();
                }
            })
    
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是取消按钮", Toast.LENGTH_SHORT).show();
                }
            })
            .create();
    alertDialog4.show();
    
     
    5.多选列表
    setMultiChoiceItems 多选框
    final String[] items5 = new String[]{"苍老湿", "小泽老湿", "波多野结衣老湿", "吉泽明步老湿"};//创建item
    final boolean[] booleans = {true, true, false, false};
    AlertDialog alertDialog5 = new AlertDialog.Builder(this)
            .setTitle("选择您喜欢的老湿")
            .setIcon(R.mipmap.ic_launcher)
            .setMultiChoiceItems(items5, booleans, new DialogInterface.OnMultiChoiceClickListener() {//创建多选框
                @Override
                public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                    booleans[i] = b;
                }
            })
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    StringBuilder stringBuilder = new StringBuilder();
                    for (int a = 0; a < booleans.length; a++) {
                        if (booleans[a]) {
                            stringBuilder.append(items5[a] + " ");
                        }
                    }
                    Toast.makeText(AlertDialogActivity.this, "这是确定按钮" + "点的是:" + stringBuilder.toString(), Toast.LENGTH_SHORT).show();
                }
            })
    
            .setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "这是取消按钮", Toast.LENGTH_SHORT).show();
                }
            })
            .create();
    alertDialog5.show();

     

    6.setAdapter的用法

     

    final String[] items6 = new String[]{"苍老湿", "小泽老湿", "波多野结衣老湿", "吉泽明步老湿"};//创建item
    AlertDialog alertDialog6 = new AlertDialog.Builder(this)
            .setTitle("选择您喜欢的老湿")
            .setIcon(R.mipmap.ic_launcher)
            .setAdapter(new ArrayAdapter<String>(AlertDialogActivity.this, R.layout.item, R.id.tv, items6), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Toast.makeText(AlertDialogActivity.this, "点的是:" + items6[i], Toast.LENGTH_SHORT).show();
                }
            })
            .create();
    alertDialog6.show();

     

    7.自定义view的用法

     

    final AlertDialog.Builder alertDialog7 = new AlertDialog.Builder(this);
    View view1 = View.inflate(this, R.layout.activity_alter_dialog_setview, null);
    final EditText et = view1.findViewById(R.id.et);
    Button bu = view1.findViewById(R.id.button);
    alertDialog7
            .setTitle("Login")
            .setIcon(R.mipmap.ic_launcher)
            .setView(view1)
            .create();
    final AlertDialog show = alertDialog7.show();
    bu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(AlertDialogActivity.this, "电话" + et.getText().toString(), Toast.LENGTH_SHORT).show();
            show.dismiss();
        }
    });
    
     

    Window弹框和activity弹框将在另外的文章中说明。

    转发表明出处

    Android互助群:

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • android系统级弹窗

    千次阅读 2016-02-20 11:56:19
    android普通的弹窗使用比较多的还是Dialog和PopupWindow,开发系统相关的应用时遇到需要不依赖Activity的弹窗,参考其他的资料,在这里总结一下两种常用的方法 1、使用系统级提示框Dialog,这种方法比较简单,在...

    android普通的弹窗使用比较多的还是Dialog和PopupWindow,开发系统相关的应用时遇到需要不依赖Activity的弹窗,参考其他的资料,在这里总结一下两种常用的方法
    1、使用系统级提示框Dialog,这种方法比较简单,在alertdialog.show();之前设置dialog为系统级提示框

    alertdialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

    同时在AndroidManifest.xml文件中加入系统提示框权限

    "android.permission.SYSTEM_ALERT_WINDOW">
    

    2、使用WindowManager 的addView()方法弹窗,使用方法也不是很复杂

    WindowManager wm = (WindowManager) getApplicationContext().getSystemService("window");
                    WindowManager.LayoutParams para = new WindowManager.LayoutParams();
                    //设置弹窗的宽高
                    para.height = LayoutParams.WRAP_CONTENT;
                    para.width = LayoutParams.WRAP_CONTENT;
                    //期望的位图格式。默认为不透明
                    para.format = 1;
                    //当FLAG_DIM_BEHIND设置后生效。该变量指示后面的窗口变暗的程度。
                    //1.0表示完全不透明,0.0表示没有变暗。
                    para.dimAmount = 0.6f;
                    para.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_DIM_BEHIND;
                    //设置为系统提示      
                    para.type = LayoutParams.TYPE_SYSTEM_ALERT;
                    //获取要显示的View
                    final View mView = LayoutInflater.from(getApplicationContext()).inflate(
                                    R.layout.systempopup_layout, null);
                    //单击View是关闭弹窗
                    mView.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            wm.removeView(mView);
                        }
                    });
                    //显示弹窗
                    wm.addView(mView, para);

    同时在AndroidManifest.xml文件中加入系统提示框权限

    "android.permission.SYSTEM_ALERT_WINDOW">
    

    其中para.flags以及LayoutParam的其他属性设置参考:
    http://blog.sina.com.cn/s/blog_4b3c1f950100qd9s.html

    3、使用第二种方法实现弹窗效

    主界面MainAcitity

    package com.zzw.systempopup;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.WindowManager;
    import android.view.WindowManager.LayoutParams;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btnButton = (Button) findViewById(R.id.btn);
            btnButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    final WindowManager wm = (WindowManager) getApplicationContext().getSystemService("window");
                    WindowManager.LayoutParams para = new WindowManager.LayoutParams();
                    //设置弹窗的宽高
                    para.height = LayoutParams.WRAP_CONTENT;
                    para.width = LayoutParams.WRAP_CONTENT;
                    //期望的位图格式。默认为不透明
                    para.format = 1;
                    //当FLAG_DIM_BEHIND设置后生效。该变量指示后面的窗口变暗的程度。
                    //1.0表示完全不透明,0.0表示没有变暗。
                    para.dimAmount = 0.6f;
                    para.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_DIM_BEHIND;
                    //设置为系统提示      
                    para.type = LayoutParams.TYPE_SYSTEM_ALERT;
                    //获取要显示的View
                    final View mView = LayoutInflater.from(getApplicationContext()).inflate(
                                    R.layout.systempopup_layout, null);
                    //单击View是关闭弹窗
                    mView.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            wm.removeView(mView);
                        }
                    });
                    //显示弹窗
                    wm.addView(mView, para);
                }
            });
        }
    
    }
    

    主界面布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打开系统窗口"
             />
    
    </RelativeLayout>
    

    弹窗界面布局

    <?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:orientation="vertical" 
        android:background="#000">
    
        <TextView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="hello world"
            android:textSize="50sp"
            android:textColor="#f00"
            />
    
    </LinearLayout>
    

    在AndroidManifest.xml文件添加权限
    效果图
    这里写图片描述
    退出应用后效果图
    这里写图片描述
    单击弹窗关闭

    源代码:http://download.csdn.net/detail/wujiewei2342/9437422

    展开全文
  • Android弹窗页面的三种实现方式

    万次阅读 2018-12-20 10:09:44
    1.AlertDialog设置自定义view 2.自定义Dialog控件 3.PopupWindow   ...LayoutInflater inflater = LayoutInflater.from(getApplication());...View view = inflater.inflate(R.layout.dialog...

    1.AlertDialog设置自定义view

    2.自定义Dialog控件

    3.PopupWindow

     

     

     

    最简单的AlertDialog设置view

    LayoutInflater inflater = LayoutInflater.from(getApplication());
    View view = inflater.inflate(R.layout.dialog_item01, null);
    AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
    builder.setView(view);
    AlertDialog dialog=builder.create();
    dialog.show();

     

    AlertDialog细节:大小和位置的设置,取得内部控件实例

    https://blog.csdn.net/yh18668197127/article/details/84975023

     

     

    自定义Dialog步骤请看我的另一篇博客

    https://blog.csdn.net/yh18668197127/article/details/84982630

    PopupWindow的用法请看我的另一篇博客

    https://blog.csdn.net/yh18668197127/article/details/84985307

    展开全文
  • android实现弹窗和自定义弹窗

    千次阅读 2017-03-15 14:04:47
    在安卓中我们有时候要实现弹窗的功能,实现弹窗有很多种实现的方法,有用系统默认的弹窗弹出窗口,但是有很多时候默认的弹窗满足不了我们,在这里我主要讲解两种自定义弹窗的方法和一种默认弹窗效果。1、 首先我们来...
                           **安卓中弹窗和自定义弹窗**
    

    在安卓中我们有时候要实现弹窗的功能,实现弹窗有很多种实现的方法,有用系统默认的弹窗弹出窗口,但是有很多时候默认的弹窗满足不了我们,在这里我主要讲解两种自定义弹窗的方法和一种默认弹窗效果。

    1、 首先我们来讲解一下默认弹窗是怎么实现的,代码如下:

    // 创建builder实例

    AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.drawable.question_dialog_icon);

            builder.setTitle("提示");
    
            builder.setMessage("游戏正在进行,你确定要切换么,切换游戏不会被保存的额?");
    
            // 确定按钮的点击事件
    
            builder.setPositiveButton(R.string.confirm,
    
                   newDialogInterface.OnClickListener() {
    
                      public void onClick(DialogInterfacedialog,
    
                            int whichButton) {
    
                         Intentintent = newIntent(JigsawActivity.this,
    
                               MainActivity.class);
    
                         // 设置退出程序的标志位
    
                         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
                         startActivity(intent);
    
                      }
    
                   });
    
            // 取消按钮的点击事件
    
            builder.setNegativeButton("取消",
    
                   newDialogInterface.OnClickListener() {
    
                      @Override
    
                      public void onClick(DialogInterfacedialog,
    
                            int which) {
    
                      }
    
                   });
    
            builder.create().show();
    

    2、实现一种自定义弹窗的效果,这种弹窗和上面有点类似,代码如下:

    // 设置自定义弹窗

            AlertDialog.Builderbuilder;
    
            AlertDialogalertDialog;
    
            // 生成一个inflater对象
    
            LayoutInflaterinflater = LayoutInflater.from(mContext);
    

    // 使用inflater对象根据布局文件生成一个view对象

            Viewlayout = inflater.inflate(R.layout.success, null);
    
            // 取出控件
    
            TextViewtxtTextView = (TextView) layout
    
                   .findViewById(R.id.mddd);
    
            txtTextView.setText("游戏胜利!");
    
            builder= newAlertDialog.Builder(mContext);
    
            builder.setView(layout);
    
            alertDialog= builder.create();
    
            alertDialog.show();
    

    3、实现自定义弹窗的效果,这种自定义弹窗是通过继承类来实现的,具体代码如下:

    //该类用于实现弹出框的效果,实现自定义的功能

    public classkeydialog extendsDialog {

    // 用来存放代表对话框当中按钮的对象

    private final View keys[] = new View[9];

    // 存放已经使用过的数字

    private int used[];

    private shuduview shuduview;

    // 构造函数第二个参数当中保存着已经用过的数字

    public keydialog(Contextcontext, int[]used, shuduview shuduview) {

      super(context);
    
      this.used = used;
    
      this.shuduview = shuduview;
    

    }

    @Override

    protected void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);
    
      // 设置标题
    
      setTitle("选择数字");
    
      setContentView(R.layout.key);
    
      findviews();
    
      // 遍历整个数组
    
      for (int i = 0; i < used.length; i++) {
    
         if (used[i] != 0) {
    
            keys[used[i] -1].setVisibility(View.INVISIBLE);
    
         }
    
      }
    
      // 为所有的按钮设置监听器
    
      setlisteners();
    

    }

    // 获取全部按钮

    private void findviews() {

      keys[0] = this.findViewById(R.id.key1);
    
      keys[1] = this.findViewById(R.id.key2);
    
      keys[2] = this.findViewById(R.id.key3);
    
      keys[3] = this.findViewById(R.id.key4);
    
      keys[4] = this.findViewById(R.id.key5);
    
      keys[5] = this.findViewById(R.id.key6);
    
      keys[6] = this.findViewById(R.id.key7);
    
      keys[7] = this.findViewById(R.id.key8);
    
      keys[8] = this.findViewById(R.id.key9);
    

    }

    // 通知shuduview对象刷新数据

    private void returnresult(int title) {

      shuduview.setSelectedtitle(title);
    
      // 取消对话框显示
    
      dismiss();
    

    }

    // 设置按钮的监听事件

    private void setlisteners() {

      // 遍历整个按钮数组
    
      for (int i = 0; i < keys.length; i++) {
    
         final int t = i + 1;
    
         keys[i].setOnClickListener(new View.OnClickListener() {
    
            public void onClick(View arg0) {
    
                returnresult(t);
    
            }
    
         });
    
      }
    

    }

    }

    调用上面这种自定义弹窗的方法是:

    keydialog keydialog = new keydialog(mContext, usedaleady, this);

    keydialog.show();

    以上就是这次要实现的弹窗的效果。

    展开全文
  • 说明:大部分内容都是参考别的文章,这里做整理是为了以后的编程有实用的模板,可以即需即用。 一、自定义 UI 的 Dialog 代码: private void showDialog() { final Dialog dialog = new Dialog(this, R.style...
  • Android选择弹窗(自定义可扩展)

    千次阅读 2016-06-30 11:20:24
    CSDN上有篇Android滚轮时间选择控件(可扩展自定义),阅读量很高,看来大家对这块的需要还是挺大的。版本迭代开发自测完,等待测试提bug。就抽空把项目需求,自己自定义的一个控件分享给需要的人。里面可以学习到...
  • 安卓AlertDialog弹窗

    千次阅读 2019-02-26 21:11:38
    Android在开发中经常会遇到有弹框的需求。 经常使用的有Dialog 弹框,Window弹框(任意位置弹出除了外观样式和显示的位置的区别之外,他们之间最本质的区别是: dialog是非阻塞式对话框,popupwindow是阻塞式对话框...
  • Android弹窗UI美化

    2020-07-17 17:52:48
    漂亮的android弹窗,更改了很多布局,瞬间高大上。可以显示图片。
  • Android弹窗的简单使用

    2019-09-27 19:36:16
    Android对话框弹窗源自于Dialog类,但是原本的Dialog格式比较单一,相较于现在UI界面的丰富绚丽,显得有些冲突。要想实现个性化的弹窗就需要在原来的Dialog类上做一些拓展。 继承Dialog类: import android....
  • Android 弹窗毛玻璃背景实践

    千次阅读 2018-03-22 15:06:53
    Android 弹窗毛玻璃背景实践 需求: 点击FloatingActionButton弹出弹层,弹层底部有多个图标可选,每一个图标都是一个功能入口,背景采用毛玻璃模糊效果。 记录一下这个需求的思考和实现过程。 查找Android原生...
  • Android弹窗插件 sweet-alert-dialog

    千次阅读 2017-05-15 17:24:41
    下面介绍一款Android弹窗插件,为了屌丝们访问快点把wiki及其图片搬回来了 Android版的SweetAlert,清新文艺,快意灵动的甜心弹框
  • gitHub 地址:https://github.com/inksnow/popuputils 我的个人主页:www.inksnow.ink 效果图: build.gradle (Project)中 添加 maven { url 'https://jitpack.io' } allprojects { ......
  • 之前集成别人的一个项目,发现了一个挺好用的查找文件的功能, 路径我这边选择的内部存储: Environment.... 一个很简单的选择弹窗,我们看一下代码: 放在openFileDialog方法中,在需要的地方调用即可...
  • 效果图要求以Dialog的样式展现网页,背景透明,下面再有一个关闭按钮。布局 activity_ui.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=... android:layout_wi
  • ![图片说明](https://img-ask.csdn.net/upload/201607/15/1468552807_853704.jpg) 求哥哥们指点 如图,我想点击弹窗的周围灰色区域,弹窗不会关闭,应该在哪里用什么方法啊
  • 内存泄漏是每一个app都可能面临的问题,尤其是弹窗导致的内存泄漏更是屡见不见,那么我们应该如何解决这类问题呢 1. 什么是内存泄漏 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未...
  • Android弹窗提示权限与对应的清单文件注册权限总结: 1.Android要允许app访问您设备上的照片、媒体内容和文件吗对应哪个权限? <!--外部存储的读取权限--> <uses-permission android:name="android....
  • 代码笔记 EditText inputServer = new EditText(this); inputServer.setHint("请输入密码"); AlertDialog alertDialog = new AlertDialog.Builder(this) .setCancelable(false) .s...
  • Android弹窗合集

    2020-07-23 23:30:58
    整合Android弹窗代码,分别使用PopupWindow和Dialog实现常用的弹窗效果。 整合Android弹窗代码,分别使用PopupWindow和Dialog实现常用的弹窗效果。
  • private void downloadAPK(String url,String version) { Log.d("下载地址",url); HttpUtils http = new HttpUtils(); final String path; if (Environment.getExternalStorageState().
1 2 3 4 5 ... 20
收藏数 20,914
精华内容 8,365
关键字:

android弹窗