編輯:關於Android編程
在一個大的Android項目中,由於客戶端來不及更新和實現,經常會內嵌一些網頁(在一些大型的互聯網公司,PC的產品總是跑在客戶端的前面),比如活動頁面,通常可以內嵌用html5實現的頁面,可以適配手機。但是這些網頁中有好多鏈接,但是這些鏈接有些內容有是我們客戶端已經實現的,比如有一個注冊鏈接,其實客戶端也實現了注冊功能,我們不想再繼續跳轉到網頁注冊,而是打開客戶端某個注冊Activity,可以通過以下方式來實現:
xml 文件,如下:
/** * 通用的webview,只需要傳入2個參數即可, param1:title 標題 param2:url 網站 * * */ public class PublicWebView extends Activity { private WebView webview; private ImageButton back; private LinearLayout public_webview_top; private boolean showTitle; private ProgressBar progressBar; @SuppressLint(JavascriptInterface) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.public_webview); Intent intent = getIntent(); String url = intent.getStringExtra(url); String title = intent.getStringExtra(title); showTitle = intent.getBooleanExtra(show_title, true); public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top); if (showTitle) { public_webview_top.setVisibility(View.VISIBLE); } else { public_webview_top.setVisibility(View.GONE); } TextView titletv = (TextView) findViewById(R.id.public_webview_title); titletv.setText(title); progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar); webview = (WebView) findViewById(R.id.public_webview_webview); // 加載需要顯示的網頁 webview.addJavascriptInterface(new JavascriptInterface(PublicWebView.this), Phoenix_Android); webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); // 設置WebView屬性,能夠執行Javascript腳本 webview.getSettings().setJavaScriptEnabled(true); // 加載需要顯示的網頁 webview.loadUrl(url); // 設置Web視圖 webview.setWebViewClient(new MyWebViewClient()); webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100) { progressBar.setVisibility(View.GONE); } else{ progressBar.setVisibility(View.VISIBLE); } super.onProgressChanged(view, newProgress); } }); back = (ImageButton) findViewById(R.id.public_webview_back); back.setOnClickListener(new BackListener(PublicWebView.this, null, 1)); } @SuppressLint(NewApi) public class JavascriptInterface { @SuppressWarnings(unused) private Context context; public JavascriptInterface(Context context) { this.context = context; } public void back(String module, int status, String place) { reFreshBlance(); if (status == -1) { // 用戶取消了 return; } else if (status == 0) { Toast.makeText(PublicWebView.this, 充值請求失敗,請稍後重試..., Toast.LENGTH_SHORT).show(); return; } else if (status == 1) { // 充值請求成功 reFreshBlance(); // 1.用戶中心進來的有兩個參數 // a.bet參數是返回購彩界面 // b.userCenter返回用戶中心 } } } // 監聽 所有點擊的鏈接,如果攔截到我們需要的,就跳轉到相對應的頁面。 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url); if (url != null && url.contains(/m/phoneRegiste.do)) { Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class); PublicWebView.this.startActivity(intent); finish(); return true; } return super.shouldOverrideUrlLoading(view, url); } @Override public void onPageFinished(WebView view, String url) { view.getSettings().setJavaScriptEnabled(true); super.onPageFinished(view, url); } } // 覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) { // webview.goBack();// 返回前一個頁面 finish(); return true; } return super.onKeyDown(keyCode, event); } }
??嵌入式設備的一個普遍特點是內存容量相對有限。當運行的程序超過一定數量時,或者涉及復雜的計算時,很可能出現內存不足,進而導致系統卡頓的現象。Android 系統也不例外
前面我們介紹了AlertDialog和幾個常用的Dialog,ProgressDialog進度條提示框、DatePickerDialog日期選擇對話框和TimePicke
一、前言 本篇blog是我的“Android進階”的第一篇文章,從初學Android到現在斷斷續續也有4個多月時間了,也算是有了一些自己的心得體會,也能自
第二章 APK包反編譯被編譯器處理過的代碼和資源已經打包成了APK,有的甚至被轉化成了二進制文件。但是我們也有一些方法,把這些編譯過的內容給變回原來的樣子,這個過程叫做-