Android 中的功能點

Android 隱藏導航欄

 

        <item name="android:windowFullscreen">true</item>

 

    public void setStatusBarFullTransparent() {
        if (Build.VERSION.SDK_INT >= 21) {//21表示5.0
            Window window = getWindow();
//            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                    | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
//            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
//            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//            window.setStatusBarColor(Color.TRANSPARENT);
            // 隱藏狀態欄
            getWindow().getDecorView().setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            );

//            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN );

        } else if (Build.VERSION.SDK_INT >= 19) {//19表示4.4
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //虛擬鍵盤也透明
            //getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }

 

Android的webView喚起打印機

    public void printWeb() {
        Log.i(TAG, "printWeb");
        if (mWebView != null) {
            String name = mWebView.getTitle()+".pdf";
            PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
            PrintAttributes.Builder builder = new PrintAttributes.Builder();
            builder.setColorMode(PrintAttributes.COLOR_MODE_COLOR);
            printManager.print("Print", mWebView.createPrintDocumentAdapter(name), builder.build());
        }
    }

 

Android & H5交互

1、Android 設置

        mLayoutRoot.addView(mWebView);

        WebSettings mWebSettings = mWebView.getSettings();
        mWebSettings.setSupportZoom(true);
        mWebSettings.setLoadWithOverviewMode(true);
        mWebSettings.setUseWideViewPort(true);
        mWebSettings.setDefaultTextEncodingName("utf-8");

        mWebSettings.setAllowContentAccess(true);
        mWebSettings.setAllowFileAccess(true);
        mWebSettings.setAllowFileAccessFromFileURLs(false);
        mWebSettings.setAllowUniversalAccessFromFileURLs(false);

        mWebSettings.setLoadsImagesAutomatically(true);
        mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);

        //新添加,解決個別機型不兼容的問題
        mWebSettings.setTextZoom(100);

        mWebView.getSettings().setUserAgentString(mWebView.getSettings().getUserAgentString()+"lianxin-commom-app");
        //自動播放音樂
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            mWebSettings.setMediaPlaybackRequiresUserGesture(false);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mWebSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }

        //調用JS方法.安卓版本大於17,加上註解 @JavascriptInterface
        mWebSettings.setJavaScriptEnabled(true);

        saveData(mWebSettings);

        newWin(mWebSettings);

        mWebView.setWebChromeClient(webChromeClient);
        mWebView.setWebViewClient(webViewClient);


        addJsListener(this, "NativeBridge");
        mWebView.loadUrl(url);
@SuppressLint("JavascriptInterface")
    public void addJsListener(Object obj, String bridgeName) {
        mWebView.addJavascriptInterface(obj, bridgeName);
    }

 2、js調用Android的方法

//JS調用Android方法
    @JavascriptInterface
    public String jsCallAndroid(){
        Toast.makeText(this,"JS調用Android方法成功",Toast.LENGTH_LONG).show();
        return result;
    }


 

//JS調用Android方法-帶參數
    @JavascriptInterface
    public String jsCallAndroid(int type){
        Toast.makeText(this,"JS調用Android方法成功,type----"+type,Toast.LENGTH_LONG).show();
        return result;
    }

如果js 調用的Android的方法內要處理webView 相關的操作,需要在主線程

    @JavascriptInterface
    public void printWeb() {
        Log.i(TAG, "printWeb");
        if (mWebView != null) {
            mWebView.post(new Runnable() {
                @Override
                public void run() {
                    Calendar calendar = Calendar.getInstance();
                    int year = calendar.get(Calendar.YEAR);
                    int month = calendar.get(Calendar.MONTH);
                    int day = calendar.get(Calendar.DAY_OF_MONTH);
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                    String formattedDate = dateFormat.format(calendar.getTime());
                           
                    String name = "諮詢報告" + formattedDate + ".pdf";
                    PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
                    PrintAttributes.Builder builder = new PrintAttributes.Builder();
                    builder.setColorMode(PrintAttributes.COLOR_MODE_COLOR);
                    printManager.print("Print", mWebView.createPrintDocumentAdapter(name), builder.build());
                }
            });
        }
    }

 

 

 3、JS調用Android

// JS中調用Android方法

window.NativeBridge.postMessage(message);
window.NativeBridge.printWeb();

 

 4、Android調用js

 protected void pushDeviceDataToWeb(String data) {
        if (mWebView != null) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mWebView.loadUrl("javascript:pushDeviceDataToWeb( '" + data + "')");
                    mWebView.loadUrl("javascript:pushDeviceDataToWebHome( '" + data + "')");
                }
            });
        }
    }

 

Android 橫屏

 android:screenOrientation="landscape"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章