public class NewsDetailActivity extends Activity implements OnClickListener { private WebView mWebView; private ImageButton btnBack;//後退按鈕 private ImageButton btnSize;//設置網頁文本大小 private ImageButton btnShare;//分享 private ProgressBar pbProgress;//一進去沒加載出內容的進度圈 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_news_detail); mWebView = (WebView) findViewById(R.id.wv_web); btnBack = (ImageButton) findViewById(R.id.btn_back); btnSize = (ImageButton) findViewById(R.id.btn_size); btnShare = (ImageButton) findViewById(R.id.btn_share); btnBack.setOnClickListener(this); btnSize.setOnClickListener(this); btnShare.setOnClickListener(this); pbProgress = (ProgressBar) findViewById(R.id.pb_progress); String url = getIntent().getStringExtra("url"); WebSettings settings = mWebView.getSettings();//獲取設置對象 settings.setJavaScriptEnabled(true);// 表示支持js,即網頁的閱讀全文 settings.setBuiltInZoomControls(true);// 顯示放大縮小按鈕 settings.setUseWideViewPort(true);// 支持雙擊縮放 mWebView.setWebViewClient(new WebViewClient() { /** * 網頁開始加載 */ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); System.out.println("網頁開始加載"); pbProgress.setVisibility(View.VISIBLE); } /** * 網頁加載結束 */ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); System.out.println("網頁開始結束"); pbProgress.setVisibility(View.GONE); } /** * 全部跳轉的連接都會在此方法中回調 */ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // tel:110,在這裏能夠獲取鏈接,能夠作不少操做,好比獲取了110,咱們能夠打電話,獲取的URL和咱們黃網數據庫匹配了,能夠攔截等 System.out.println("跳轉url:" + url); view.loadUrl(url);//本身的應用中打開網頁,不會調到系統瀏覽器了 return true; // return super.shouldOverrideUrlLoading(view, url); } }); // mWebView.goBack()//好比弄個上一頁下一頁的按鈕執行這個方法 mWebView.setWebChromeClient(new WebChromeClient() { /** * 進度發生變化 */ @Override public void onProgressChanged(WebView view, int newProgress) { System.out.println("加載進度:" + newProgress); super.onProgressChanged(view, newProgress); } /** * 獲取網頁標題 */ @Override public void onReceivedTitle(WebView view, String title) { System.out.println("網頁標題:" + title);//能夠顯示在頂部的textview上 super.onReceivedTitle(view, title); } }); mWebView.loadUrl(url);// 默認加載網頁,能夠隨便寫 } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_back: finish();//銷燬activity,即顯示出了上一個頁面 break; case R.id.btn_size: showChooseDialog(); break; case R.id.btn_share: showShare(); break; default: break; } } private int mCurrentChooseItem;// 記錄當前選中的item, 點擊肯定前 private int mCurrentItem = 2;// 記錄當前選中的item, 點擊肯定後,默認是標準字體,有個問題:在進來又變回了標準,能夠保存起來 /** * 顯示選擇對話框 */ private void showChooseDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); String[] items = new String[] { "超大號字體", "大號字體", "正常字體", "小號字體", "超小號字體" }; builder.setTitle("字體設置"); builder.setSingleChoiceItems(items, mCurrentItem, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("選中:" + which); mCurrentChooseItem = which; } }); builder.setPositiveButton("肯定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { WebSettings settings = mWebView.getSettings(); switch (mCurrentChooseItem) { case 0: settings.setTextSize(TextSize.LARGEST); break; case 1: settings.setTextSize(TextSize.LARGER); break; case 2: settings.setTextSize(TextSize.NORMAL); break; case 3: settings.setTextSize(TextSize.SMALLER); break; case 4: settings.setTextSize(TextSize.SMALLEST); break; default: break; } mCurrentItem = mCurrentChooseItem; } }); builder.setNegativeButton("取消", null); builder.show(); } /** * 分享, 注意在sdcard根目錄放test.jpg,就是這個天氣圖片 */ private void showShare() { ShareSDK.initSDK(this); OnekeyShare oks = new OnekeyShare(); oks.setTheme(OnekeyShareTheme.SKYBLUE);//設置天藍色的主題 // 關閉sso受權 oks.disableSSOWhenAuthorize(); // 分享時Notification的圖標和文字,不知道爲何這報錯,仍是不能寫字 oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name)); // title標題,印象筆記、郵箱、信息、微信、人人網和QQ空間使用 oks.setTitle(getString(R.string.share)); // titleUrl是標題的網絡連接,僅在人人網和QQ空間使用 oks.setTitleUrl("http://sharesdk.cn"); // text是分享文本,全部平臺都須要這個字段 oks.setText("我是分享文本"); // imagePath是圖片的本地路徑,Linked-In之外的平臺都支持此參數 oks.setImagePath("/sdcard/test.jpg");// 確保SDcard下面存在此張圖片 // url僅在微信(包括好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // comment是我對這條分享的評論,僅在人人網和QQ空間使用 oks.setComment("我是測試評論文本"); // site是分享此內容的網站名稱,僅在QQ空間使用 oks.setSite(getString(R.string.app_name)); // siteUrl是分享此內容的網站地址,僅在QQ空間使用 oks.setSiteUrl("http://sharesdk.cn"); // 啓動分享GUI oks.show(this); }}