关于WebView是否会引起android系统触摸失效?

会打杂的前端攻城狮 发布于 2013/05/23 18:07
阅读 1K+
收藏 0

webView = (WebView)mainView.findViewById(R.id.myWeb);

helpApiBtn = (ImageButton)mainView.findViewById(R.id.helpApiBtn);
                helpApiBtn.setOnClickListener(new OnClickListener() {
                    
                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        webView.loadUrl("file:///android_asset/div.html");
                        webView.setWebChromeClient(new MyWebChromeClient());// 支持 js alert()
                        webView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");// js调用android方法

                        WebSettings webSettings = webView.getSettings();
                        // 获取系统语言
                        language = getResources().getConfiguration().locale.getCountry();
                        //语言默认 EN
                        if(language.length()<=0){
                            language = "EN";
                        }

                        webSettings.setSupportZoom(true);// 设置可以支持缩放
                        webSettings.setJavaScriptEnabled(true);// 支持js
                        webSettings.setUseWideViewPort(true);// 让网页自动适应屏幕宽度
                        webSettings.setLoadWithOverviewMode(true);// 让网页自动适应屏幕宽度

                        // 获取分辨率
                        DisplayMetrics dm = new DisplayMetrics();
                        (OtdrActivity.this).getWindowManager().getDefaultDisplay()
                                .getMetrics(dm);
                        int mDensity = dm.densityDpi;
                        if (mDensity == 240) {
                            webSettings.setDefaultZoom(ZoomDensity.FAR);
                        } else if (mDensity == 160) {
                            webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
                        } else {
                            webSettings.setDefaultZoom(ZoomDensity.CLOSE);
                        }
                        webView.loadUrl("file:///android_asset/div.html");
                        
                        webViewRlt.setVisibility(View.VISIBLE);
                    
//                        setContentView(webView);
                        checkWebView = 1;
                    }
                });


******************************分割线********************************

final class DemoJavaScriptInterface {
        DemoJavaScriptInterface() {
        }

        /**
         * This is not called on the UI thread. Post a runnable to invoke
         * loadUrl on the UI thread.
         */
        public void clickOnAndroid() {
            mHandler.post(new Runnable() {
                public void run() {
                    webView.loadUrl("javascript:getLanguage('" + language + "')");
                }
            });
        }
        public void closeApi() {
            mHandler.post(new Runnable() {
                public void run() {
                    System.out.println("close Api");
                    checkWebView = 0;
                    webViewRlt.setVisibility(View.GONE);
                }
            });
            
        }
    }

    /**
     * Provides a hook for calling "alert" from javascript. Useful for debugging
     * your javascript.
     */
    final class MyWebChromeClient extends WebChromeClient {
        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                JsResult result) {
            result.confirm();
            return true;
        }
        
    }
}


**************************xml*********************************

<RelativeLayout
        android:id="@+id/webViewRlt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
         <WebView
            android:id="@+id/myWeb"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
        />
        
    </RelativeLayout>


********************************************************************

WebView 显示的 html  左边是一棵树 右边显示内容

为什么WebView 有时候会突然 卡主了  然后  整个屏幕都不能触摸了

按键可以用 我把整个程序的 进程都结束掉  还是不能触摸 

这是什么原因???

加载中
0
会打杂的前端攻城狮
会打杂的前端攻城狮
@铂金小鸟 @铂金小猪 @铂金小猫 @铂金小鹰 @铂金家族 = =  坐等答案~~~
0
铂金小鸟
铂金小鸟
不会。看你js是否有问题!
会打杂的前端攻城狮
会打杂的前端攻城狮
最新问题。。。触摸失效之后 锁屏 解锁 触摸又好了。。。 这- -怎么破
会打杂的前端攻城狮
会打杂的前端攻城狮
js我在电脑上测试过没什么问题,而且在android上测试过也没什么问题。所有js可用正常运行。触屏失效的问题是偶尔出现。。。 如果是js问题。可是我都在 电脑 停止了 整个程序的进程, 然后 触屏 还是不能用。。。按键依然可用- - 这。。。
0
loki_lan
loki_lan
你的JS是否过大?安卓机子不是电脑,加载JS占用内存会加大,你突然卡住用不了触屏的原因估计是占用内存太大了(如果占用过高,机子会自动释放一些资源),不建议你做太多的JS文件。
会打杂的前端攻城狮
会打杂的前端攻城狮
加载了 两个外部js (自己写的) 每个js 300~ 400行吧 60kb内 这样算是大的js不- -?
0
会打杂的前端攻城狮
会打杂的前端攻城狮

我的js文件4个

用来写三个国家的语言- -

***************************************************

init.js

function initbody() {
     var controller = new LanguageController();
    div_head.innerHTML = controller.language.titles["DIV_HEAD"];

    ...

}

function getText($id) {
    //控制右边内容显示
    var id = $id + "_right";
    var divRights = document.getElementById("divRight").getElementsByTagName("div");
    for (var i = 0; i < divRights.length; i++) {
        if (divRights[i].id == id) {
            divRights[i].style.display = "block";
        } else {
            divRights[i].style.display = "none";
        }
    };
    //控制左边菜单项的css
    var childMeuns = document.getElementsByName("childMeun");
    for (var i=0; i < childMeuns.length; i++) {
        childMeuns[i].style.backgroundColor = "white";
        childMeuns[i].style.color = "black";
        
        if(childMeuns[i].id == $id){
            childMeuns[i].style.backgroundColor = "blue";
            childMeuns[i].style.color = "white";
        }
      
    };
    if ($id == "div8") {
        if (document.getElementById("div9").style.display == "none") {
            document.getElementById("div9").style.display = "block";
            document.getElementById("parentItem1").style.background = "url('images/minus.png') no-repeat";
        } else {
            document.getElementById("div9").style.display = "none";
            document.getElementById("parentItem1").style.background = "url('images/plus.png') no-repeat";
        }

    }
    if ($id == "div18") {
        if (document.getElementById("div19").style.display == "none") {
            document.getElementById("div19").style.display = "block";
            document.getElementById("parentItem2").style.background = "url('images/minus.png') no-repeat";
        } else {
            document.getElementById("div19").style.display = "none";
            document.getElementById("parentItem2").style.background = "url('images/plus.png') no-repeat";
        }
    }
}
/**
 * 獲取系統語言
 * @param {Object} $str
 */
function getLanguage($str) {
    if($str=="CN"||$str=="TW"){
        var items =    document.getElementsByClassName("item");
        for (var i=0; i < items.length; i++) {
          items[i].style.width = "350px";//OTDR上
        };
    }
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = $str+ ".js";
    head.appendChild(script);
}

function closeApi(){
    window.demo.closeApi();
}

***************************************************

function LanguageController() {
    this.language = {
        lang : "zh-cn",
        titles : {
            "DIV_HEAD" : "使用说明",

            ...

}

************************************************

main.html

    <script type="text/javascript">
        window.onload = function() {
            window.demo.clickOnAndroid();
            setTimeout("initbody()", 150);
        }
    </script>

***************************

其他两个js配置都是一样- -

@铂金小猫 @铂金小白 @恺哥 @虫虫 @红薯 @铂金家族 come on~~~求解救啊

@清风居士


返回顶部
顶部