用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
專案名稱:Activities 維持ConstraintLayout,根據右圖設計相關介面: TextView EditText textSize: 30sp EditText id: @+id/edt text: 「http://www.pu.edu.tw」 Button text: 「開啟網頁」 onClick: OpenSecond
1. AndroidManifest.xml專案設定檔 將顯示螢幕強制設定為橫向 <activity android:name=".MainActivity" android:screenOrientation="landscape" > 若設為portrait 則強制直向
Activity_main.xml螢幕編輯設成橫向
2.在程式中新增 Activity 滑鼠停在左邊app,按滑鼠右鍵 畫面元件修改 將編輯畫面設為橫向 File→New →Activity→FullScreen Activity(全螢幕) Activity Name: 命名為SecondActivity 畫面元件修改 fullscreen_content (TextView) id: @+id/fullscreen_content text: 第二個畫面 textSize: 30sp dummy_button的onClick設為:FinishSecond text: 回到主畫面 將編輯畫面設為橫向
AndroidManifest.xml將SecondActivity設為橫向
3. Intent Android 裡傳遞訊息的元件 可分為兩類 Explicit(明示) intents: 有明確元件目標(名稱)的 Intent 通常用於啓動其他應用程式的元件 本ppt屬於此種方式 Implicit(暗示) intents: 沒有明確元件目標的 Intent 下一份ppt
用Intent 啟動程式中的Activity startActivity():用明示 Intent 啟動 Activity
finish():結束 Activity
程式碼 MainActivity.Java SecondActivity.Java public void OpenSecond(View v){ Intent it = new Intent(this, SecondActivity.class); startActivity(it); } SecondActivity.Java public void FinishSecond(View v){ finish(); }
執行結果 點選螢幕
4.在Intent中夾帶資料傳給新Activity
putExtra():附加資料到 Intent 中
getIntent() 與 getXxxExtra(): 從 Intent 中取出資料
程式碼:傳遞Name字串 MainActivity.Java public void OpenSecond(View v){ Intent it = new Intent(this, SecondActivity.class); EditText edt = (EditText) findViewById(R.id.edt); it.putExtra("website", edt.getText().toString()); startActivity(it); }
程式碼:接收Name字串 SecondActivity.Java protected void onCreate(Bundle savedInstanceState) { …… Intent it = getIntent(); String website = it.getStringExtra("website"); TextView t = (TextView) findViewById(R.id.fullscreen_content); t.setText(website); }
執行結果
5. WebView 於第二個活動的畫面(activity_second.xml),在文字下方,加入一個WebView FrameLayout是一種堆疊的版面配置,後續的 元件會蓋在上面 Id: @+id/webv
讓WebView顯示網頁內容 SecondActivity.java onCreate方法最後,加入: WebView webv = (WebView) findViewById(R.id.webv); webv.loadUrl(website); AndroidManifest.xml加入網路存取權限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
執行結果
5.1 設定WebView支援JavaScript語法 SecondActivity.java onCreate方法: WebView webv = (WebView) findViewById(R.id.webv); //允許網頁使用JavaScript webv.getSettings().setJavaScriptEnabled(true); webv.loadUrl(website);
輸入其他網址,會詢問要用哪個 瀏覽器開啟
5.2 強制使用webView瀏覽網頁 SecondActivity.java的onCreate方法 … //預設的網頁會彈出選擇瀏覽器 webv.setWebViewClient(new WebViewClient()); webv.loadUrl(website);
5.3 根據螢幕寬度調整網頁,並可縮放 SecondActivity.java的onCreate方法 … //如果沒有強制設定寬度,則使用範圍的最大視野(螢幕寬度) webv.getSettings().setUseWideViewPort(true); //當內容大於viewport時,系統將會自動縮小內容以適應螢幕寬度. webv.getSettings().setLoadWithOverviewMode(true); //顯示放大縮小 控制項 webv.getSettings().setBuiltInZoomControls(true); webv.getSettings().setSupportZoom(true); //可以縮放 webv.loadUrl(website);
點選網頁超鏈結,但是按返回鍵,都直接跳到上一個Activity 點選超鏈結
5.4 網頁返回鍵處理 SecondActivity.java的SecondActivity類別,新增onBackPressed方法: @Override public void onBackPressed() { WebView webv = (WebView) findViewById(R.id.webv); if( webv.canGoBack()){ webv.goBack(); }else{ this.finish(); //結束 }