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"