android 基礎瀏覽器製作
目的:
利用WebView元件撰寫基礎的瀏覽器
可前進、後退、提示錯誤訊息
說明:
在Android不會特別說明元件屬性或UI編排方式
除非有特別的情況。
注意事項:
1.記得開啟Internet權限
2.進度條要在MainActivity的OnCreate設定
3.像youtue需要javaScript,記得設定開啟才能正常顯示
程式碼:
利用WebView元件撰寫基礎的瀏覽器
可前進、後退、提示錯誤訊息
說明:
在Android不會特別說明元件屬性或UI編排方式
除非有特別的情況。
注意事項:
1.記得開啟Internet權限
2.進度條要在MainActivity的OnCreate設定
3.像youtue需要javaScript,記得設定開啟才能正常顯示
程式碼:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); //設定Activity顯示進度列,務必放在setContentView前 //如此,才會有網頁讀取的進度條 setContentView(R.layout.activity_main); if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } //主Fragment--------------------------------------------------------------------------------- public static class PlaceholderFragment extends Fragment { Button go,forward,back; EditText webAddress; WebView wv; public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); go =(Button) rootView.findViewById(R.id.go); forward = (Button) rootView.findViewById(R.id.forward); back = (Button) rootView.findViewById(R.id.back); webAddress =(EditText) rootView.findViewById(R.id.webAddress); wv =(WebView) rootView.findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true); //開啟javaScript,才可以開youtube等網站 wv.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { getActivity().setProgress(newProgress*100); //修改Activity中的進度列 super.onProgressChanged(view, newProgress); } }); wv.setWebViewClient(new WebViewClient(){ @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(getActivity(), "Sorry!"+description, Toast.LENGTH_SHORT).show(); //顯示錯誤訊息 super.onReceivedError(view, errorCode, description, failingUrl); } }); OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.go: String url ="http://" + webAddress.getText().toString().trim(); //trim() 去掉頭尾空白 if(URLUtil.isNetworkUrl(url)) wv.loadUrl(url); else Toast.makeText(getActivity(), "Sorry!網址錯誤",Toast.LENGTH_SHORT).show(); break; case R.id.forward: if(wv.canGoForward()) wv.goForward(); else Toast.makeText(getActivity(), "不可前進",Toast.LENGTH_SHORT).show(); break; case R.id.back: if(wv.canGoBack()) wv.goBack(); else Toast.makeText(getActivity(), "不可退回",Toast.LENGTH_SHORT).show(); break; } } }; go.setOnClickListener(listener); back.setOnClickListener(listener); forward.setOnClickListener(listener); return rootView; } } }
留言
張貼留言