android html5 的弹出窗设置

来源:互联网 发布:网络攻防属于什么专业 编辑:程序博客网 时间:2024/06/05 04:57
webSettings = webView.getSettings();webSettings.setDomStorageEnabled(true);webSettings.setJavaScriptEnabled(true);webSettings.setUseWideViewPort(true);webSettings.setLoadWithOverviewMode(true);webView.setWebViewClient(new MyWebViewClient());

webView.setWebChromeClient(new MyWebChromeClient());

这些是基础的没说的

class MyWebChromeClient extends WebChromeClient { //   * 覆盖默认的window.alert展示界面,避免title里显示为“:来自file:////”    @Override    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {        final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());        builder.setTitle("温馨提示")                .setMessage(message)                .setPositiveButton("确定", null);        // 不需要绑定按键事件        // 屏蔽keycode等于84之类的按键        builder.setOnKeyListener(new DialogInterface.OnKeyListener() {            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {                return true;            }        });        // 禁止响应按back键的事件        builder.setCancelable(false);        AlertDialog dialog = builder.create();        dialog.show();        result.confirm();// 因为没有绑定事件,需要强行confirm,否则页面会变黑显示不了内容。        return true;    }    /**     * 覆盖默认的window.confirm展示界面,避免title里显示为“:来自file:////”     */    public boolean onJsConfirm(WebView view, String url, String message,                               final JsResult result) {        final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());        builder.setTitle("温馨提示")                .setMessage(message)                .setPositiveButton("确定", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int which) {                        result.confirm();                    }                })                .setNegativeButton("取消", new DialogInterface.OnClickListener() {                    public void onClick(DialogInterface dialog, int which) {                        result.cancel();                    }                });        builder.setOnCancelListener(new DialogInterface.OnCancelListener() {            @Override            public void onCancel(DialogInterface dialog) {                result.cancel();            }        });        // 屏蔽keycode等于84之类的按键,避免按键后导致对话框消息而页面无法再弹出对话框的问题        builder.setOnKeyListener(new DialogInterface.OnKeyListener() {            @Override            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {                return true;            }        });        // 禁止响应按back键的事件        // builder.setCancelable(false);        AlertDialog dialog = builder.create();        dialog.show();        return true;}
在h5中可以直接alert


还有等待窗口

public class ProgressDialogUtil {    private static Dialog progressDialog;    private static int level;//等待框展示层级,只有level=0的时候才能关闭progressDialog    public static synchronized void showProgressDialog(Context context) {            if (progressDialog == null || context != getDialogBaseContext(progressDialog)) {                dismissProgressDialog();                progressDialog = new Dialog(context, R.style.SH_MyDialogStyle);                progressDialog.setContentView(R.layout.sh_progress_dialog_layout);                progressDialog.setCancelable(true);                progressDialog.setCanceledOnTouchOutside(false);                progressDialog.show();            } else if (!progressDialog.isShowing()) {                progressDialog.show();            }        level++;    }    public static synchronized void dismissProgressDialog() {        level--;        if (level < 0) {            level = 0;        }        if (progressDialog != null && level == 0 && progressDialog.isShowing()) {            progressDialog.dismiss();            progressDialog = null;        }    }    private static Context getDialogBaseContext(Dialog dialog) {        if (dialog.getContext() instanceof ContextThemeWrapper) {            try {                Field mBase = dialog.getContext().getClass().getDeclaredField("mBase");                mBase.setAccessible(true);                return (Context) mBase.get(dialog.getContext());            } catch (Exception e) {                e.printStackTrace();            }        }        return dialog.getContext();    }}
<style name="SH_MyDialogStyle" parent="android:Theme">    <item name="android:windowBackground">@color/transparent</item>    <item name="android:windowFrame">@null</item>    <item name="android:windowNoTitle">true</item>    <item name="android:windowIsTranslucent">true</item>    <item name="android:windowContentOverlay">@null</item>    <item name="android:layout_gravity">center</item>    <item name="android:windowIsFloating">true</item>    <item name="android:minWidth">200dp</item>    <item name="android:windowCloseOnTouchOutside">false</item>    <item name="android:backgroundDimEnabled">true</item>    <item name="android:backgroundDimAmount">0.2</item>    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item></style>
<?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="80dp"    android:background="@drawable/bg_numpicker"    android:gravity="center_vertical"    android:orientation="horizontal"    android:paddingLeft="20dp"    android:paddingRight="20dp">    <TextView        android:id="@+id/sh_textView"        android:layout_width="wrap_content"        android:layout_height="80dp"        android:layout_weight="1"        android:gravity="center_vertical|left"        android:text="请稍候…"        android:textColor="@color/sh_text_black_tips"        android:textSize="13sp" />    <ProgressBar        style="@style/Widget.AppCompat.ProgressBar"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>
/** * js   调用请求等待框显示 */@JavascriptInterfacepublic void showLoding() {    ProgressDialogUtil.showProgressDialog(mContext);}/** * js   调用请求等待框消失 */@JavascriptInterfacepublic void dissmissLoding() {    ProgressDialogUtil.dismissProgressDialog();}
在js中进行调用。

明天写点js h5的东西。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胎盘没有排干净怎么办 恶露过后有异味怎么办 恶露一直不干净怎么办 剖腹产后有淤血怎么办 脸部不吸收护肤品怎么办 国地税合并干部怎么办 通力电梯门刀不张开怎么办 即刻棋牌被骗局怎么办 外汇辅导期超期怎么办 增值税忘交了怎么办 衣服买回来就很臭怎么办 买了一等品瓷砖怎么办 新车合格证掉了怎么办 新车合格证丢了怎么办 新车拿不到合格证怎么办 mac只有128g怎么办 mac打不开dmg文件怎么办 七度空间假的怎么办 用了过期卫生巾怎么办 网银盾状态异常怎么办 欠京东2000京豆怎么办 京券过期了怎么办 荒野行动不支持机型怎么办 京东充话费充错怎么办 汽车流量用完了怎么办 近邻宝东西没取完怎么办? 京东自提没去领怎么办 京东银行卡限额怎么办 小米6被锁机了怎么办 小米手机垃圾清不掉怎么办 康佳电视开机黑屏怎么办 京东实名不了怎么办 京东学生认证怎么办 京东次日达没到怎么办 京东京豆负数怎么办 领券达到上限怎么办 京东买东西发票怎么办 京东收货后怎么办 没有买运费险怎么办 1号店卖家发错货不给处理怎么办 买运费险换货怎么办