js为啥按下ente后swal弹出窗消失

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js为啥按下ente后swal弹出窗消失相关的知识,希望对你有一定的参考价值。

参考技术A 一般也都是这样 弹窗 都是这样子的 ,

Android学习笔记二十之Toast吐司Notification通知PopupWindow弹出窗

Android学习笔记二十之Toast吐司、Notification通知、PopupWindow弹出窗

Toast吐司

  Toast吐司是我们经常用到的一个控件,Toast是AndroidOS用来显示消息的一种机制,它与Dialog不同,Toast不会获取到焦点,通常显示一段时间之后就会自动消失,下面我们来介绍Toast的几种常用方式:

第一种,默认显示方式,也是最常用的方式:

 Toast.makeText(MainActivity.this, "这是默认的显示方式", Toast.LENGTH_SHORT).show();

第二种,自定义设置位置的显示方式:

Toast toast = Toast.makeText(MainActivity.this, "这是自定义显示位置的效果", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER, 0, 0);
toast.show();

第三种,带图片显示:

 Toast toast = Toast.makeText(MainActivity.this, "这是带图片的效果", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER, 0, 0);
LinearLayout linearLayout = (LinearLayout) toast.getView();
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
linearLayout.addView(imageView, 0);
toast.show();

第四种,完全自定义显示方式:

 LayoutInflater layoutInflater = getLayoutInflater();
View toastView = layoutInflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.ll_toast));
Toast toast = new Toast(MainActivity.this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setView(toastView);
toast.show();

布局文件代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_toast"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16sp"
android:layout_marginTop="16sp"
android:gravity="center"
android:orientation="horizontal">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="这是完全自定义的吐司"
    android:textSize="20sp" />
</LinearLayout>

第五种,其他线程通过handler显示:

new Thread(new Runnable() {
@Override
public void run() {
handler.sendEmptyMessage(1);
}
}).start();

public void showToast() {
    Toast.makeText(MainActivity.this, "这是来自其它线程的吐司", Toast.LENGTH_SHORT).show();
}
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (msg.what == 1) {
            showToast();
        }
        super.handleMessage(msg);
    }
};

实现效果图:

猛戳下载源码

最后附上Toast的国内镜像API

Notification通知

  Notification是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification。在AndroidAPI3.0之前,推荐使用Notification.Builder构建一个消息,但是在3.0之后,推荐使用NotificationCompat.Builder构建。

下面我们介绍一下Notification的基本使用方法:

通知主要涉及到两个类:

  • Notification类:通知信息类,它用于承载通知的内容,一般我们不直接构建这个对象,而是使用它的一个内部类NotificationCompat.Builder来实例化一个对象(Android3.0之下使用Notification.Builder),并设置通知的各种属性,最后通过NotificationCompat.Builder.build()方法得到一个Notification对象。当获得这个对象之后,可以使用NotificationManager.notify()方法发送通知。
  • NotificationManager类:是一个通知管理器类,这个对象是由系统维护的服务,是以单例模式获得,所以一般并不直接实例化这个对象。在Activity中,我们直接传入Context.NOTIFICATION_SERVICE就可以通过调用Activity.getSystemService(String)方法获取NotificationManager对象。

通知设置的相关方法:

  • setContentTitle(CharSequence):设置标题,必须要设置
  • setContentText(CharSequence):设置内容,必须要设置
  • setSmallIcon(int):设置在接收到通知的时候顶部显示的小图标,必须要设置
  • setSubText(CharSequence):设置内容下面一小行的文字
  • setTicker(CharSequence):设置收到通知时在顶部显示的文字信息
  • setLargeIcon(Bitmap):设置大图标
  • setAutoCancel(boolean):用户点击Notification点击面板后是否让通知取消(默认不取消)
  • setDefaults(int):向通知添加声音、闪灯和振动效果的最简单、 使用默认(defaults)属性,可以组合多个属性,Notification.DEFAULT_VIBRATE(添加默认震动提醒);Notification.DEFAULT_SOUND(添加默认声音提醒);Notification.DEFAULT_LIGHTS(添加默认三色灯提醒);Notification.DEFAULT_ALL(添加默认以上3种全部提醒)
  • setVibrate(long[]):设置振动方式
  • setLights(int argb, int onMs, int offMs):设置三色灯,参数依次是:灯光颜色, 亮持续时间,暗的时间
  • setSound(Uri):设置接收到通知时的铃声,可以用系统的,也可以自己设置
  • setOngoing(boolean):设置为ture,表示它为一个正在进行的通知
  • setProgress(int,int,boolean):设置带进度条的通知 参数依次为:进度条最大数值,当前进度,进度是否不确定 如果为确定的进度条
  • setContentIntent(PendingIntent):PendingIntent和Intent略有不同,它可以设置执行次数, 主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少
  • setPriority(int):设置优先级

使用Notification的步骤:

  • 第一步:获得一个NotificationManager对象,
  • 第二步:创建一个通知栏的Builder构造类
  • 第三步:对Builder进行相关的设置,通过用上面介绍的相关方法
  • 第四步:调用Builder的build()方法为notification赋值
  • 第五步:调用NotificationManager的notify()方法发送通知

注意:Android系统提供两种取消通知的方法:一种是Notification自己维护,使用setAutoCancel()方法设置是否维护,传递一个boolean类型的数据。另外一种方式使用NotificationManager通知管理器对象来维护,它通过notify()发送通知的时候,指定的通知标识Id来操作通知,可以使用cancel(int)来移除一个指定的通知,也可以使用cancelAll()移除所有的通知。

下面我们通过实现一个简单的例子来体验Notification的用法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mContext = MainActivity.this;
    btn_default_notification = (Button) findViewById(R.id.btn_default_notification);
    btn_default_notification.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(mContext, DefaultActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
            NotificationManager notificationManager = (NotificationManager) MainActivity.this.getSystemService(NOTIFICATION_SERVICE);
            Notification.Builder builder = new Notification.Builder(MainActivity.this);
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentTitle("默认消息通知");
            builder.setContentText("我是默认显示的消息,我进来了");
            builder.setWhen(System.currentTimeMillis());
            builder.setTicker("接受到一条信息");
            builder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);
            builder.setAutoCancel(true);
            builder.setContentIntent(pendingIntent);
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
                Notification notification = builder.build();
                notificationManager.notify(NOTIFICATION, notification);
            }

        }
    });
}

这里的话就只放Java的代码,其他的就不再设置了,也比较简单。

猛戳下载源码

照例附上Notification的国内镜像API

PopupWindow弹出窗

  PopupWindow这个类用来实现一个弹出框,PopupWindow可以加载任意内容的View,这个弹出框是悬浮在当前activity之上的。如果PopupWindow显示了,那么所有的事件都会被其拦截,除了home的之外,例如:一个PopupWindow弹出了,那么你需要点击手机上的退出键让PopupWindow消失,然后Activity才会退出。

下面我们通过一个例子来体验一下PopupWindow:

Activity代码:

package com.example.popupwindow;

import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private Button btn_show_pop;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn_show_pop = (Button) findViewById(R.id.btn_show_pop);
    btn_show_pop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            initPop(view);
        }
    });
}

private void initPop(View view) {
    View popView = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_custom, null);
    Button btn_01 = (Button) popView.findViewById(R.id.btn_01);
    Button btn_02 = (Button) popView.findViewById(R.id.btn_02);
    Button btn_03 = (Button) popView.findViewById(R.id.btn_03);
    //初始化一个PopupWindow,第一个参数是加载的View,第二个参数是View的宽度,第三个参数是View的高度,第四个是是否获取焦点
    final PopupWindow popupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
    //设置加载动画
    popupWindow.setAnimationStyle(R.anim.pop_anim);
    //设置可以点击空白处让PopupWindow消失
    popupWindow.setOutsideTouchable(true);
    popupWindow.setTouchable(true);

    popupWindow.setTouchInterceptor(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            System.out.println("touch");
            //这里如果返回true的话,touch事件将被拦截
            return false;
        }
    });
    //设置背景颜色
    popupWindow.setBackgroundDrawable(new ColorDrawable(0x00ff0000));
    //设置PopupWindow显示的位置,第一个参数是相对的View,第二个是X轴,第三个参数是Y轴
    //showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
    //showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
    //showAtLocation(View parent, int gravity, int x, int y): 相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移 PS:parent这个参数只要是activity中的view就可以了!
    popupWindow.showAsDropDown(view, 40, 0);
    btn_01.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "你点击了水果", Toast.LENGTH_SHORT).show();
            popupWindow.dismiss();
        }
    });
    btn_02.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "你点击了运动", Toast.LENGTH_SHORT).show();
            popupWindow.dismiss();
        }
    });
    btn_03.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "你点击了吃饭", Toast.LENGTH_SHORT).show();
            popupWindow.dismiss();
        }
    });
}
}

布局文件代码:

<?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">

<Button
    android:id="@+id/btn_01"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="水果" />

<Button
    android:id="@+id/btn_02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:text="运动" />

<Button
    android:id="@+id/btn_03"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:text="吃饭" />

</LinearLayout>

实现效果:

其中,PopupWindow有9种构造方法,如下图所示:

我们常用就一下几种:

public PopupWindow (Context context)
public PopupWindow(View contentView, int width, int height)
public PopupWindow(View contentView)
public PopupWindow(View contentView, int width, int height, boolean focusable)

猛戳下载Demo源码

关于弹出窗的介绍就到这里了,最后照例附上PopupWindow的国内镜像API

以上是关于js为啥按下ente后swal弹出窗消失的主要内容,如果未能解决你的问题,请参考以下文章

Android学习笔记二十之Toast吐司Notification通知PopupWindow弹出窗

js点击弹出提示层2秒钟之后自动消失

使用layer插件为啥弹出框没点确定就自动消失了

THINKPHP为啥头部有淘宝的JS和CSS,出现后就消失。

js点击任意区域弹出层消失,js点击弹出层之外的任意区域弹出层消失,常见弹层的封装

按下回车键后Jquery焦点消失