編輯:關於Android編程
學習一下人家100日寫100個網頁的做法,我也用100日寫100個完整的Android程序。
這些程序的最基本要求:
1 完整性-每個程序都必須是獨立可運行的
2 不重復性-所用的重點知識點都不一樣
開篇章:
--本章參考書本:Hello Android
編寫一個簡單的頁面,如下,圖1:
在文本框輸入網址,圖2:
點擊按鈕GO,然後就可以打開這個網站了, 圖3:
步驟:
一 首先,新建一個項目,具體參數設置可以參照我的項目設置,如下:
主要看<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+MSBzcmPPwrXEQnJvd3Nlci5qYXZho7rW99KqtcRqYXZhwt+8rbT6wus8L3A+CjxwPjIgbGF5b3V0z8K1xGFjdGl2aXR5X2Jyb3dzZXIueG1so6x4bWzQtLXEsry+1jwvcD4KPHA+MyB2YWx1ZXO1xHN0cmluZ3MueG1su+HQ6NKqtqjS5dK70KnX1rf7PC9wPgo8cD40IEFuZHJvaWRNYW5pZmVzdC54bWzKx8jtvP61xLao0uXOxLz+wcs8L3A+CjxwPjxicj4KPC9wPgo8cD62/iDJ6NbDsry+1mxheW91dKOstPK/qmFjdGl2aXR5X2Jyb3N3c2VyLnhtbDwvcD4KPHA+zO2807T6wuujujwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">
2 其中的參數imeOptions="actionGo"和imputType="textUri"是告訴Android使用的軟鍵盤應該是帶".com"和"/"和有Go按鍵的,按下這個按鍵就可以直接跳轉到指定網頁。
就這樣就做出如圖1的界面了
二 邏輯代碼 Browser.java
接下來就是驅動界面工作的邏輯代碼
1 設置好處理輸入和按鍵功能
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_browser); //Get a handle to all user interface elements urlText = (EditText)findViewById(R.id.url_field); goButton = (Button)findViewById(R.id.go_button); //Set up Handlers goButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { openBrowser(); } }); urlText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (equ(keyCode, KeyEvent.KEYCODE_ENTER)) { openBrowser(); return true; } return false; } }); }其中的openBrowser函數是下面自定義的。
goButton這個按鍵響應點擊事件,故此使用setOnClickListener(new OnClickListener())設置好OnClickListener對象監聽這個按鍵,這裡是Java獨有的機制了,直接在new 後面寫一個OnClickListener的繼承類,重寫onClick函數。 C++就不能這麼寫了。
urlText是EditText的id,使用setOnKeyListener設置好對象監聽,如果按下ENTER的時候就響應openBrowser函數,當然現在的觸屏手機一般都沒有按鍵了,不過有軟鍵盤。
openBroser函數定義:
private void openBrowser() { Uri uri = Uri.parse(urlText.getText().toString()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); }新建一個Intent,使用浏覽器打開這個網址。
到此為止,整個程序就可以運行了。
但是現在問題來了:
如果輸入blog.csdn.net/kenden23,那麼就會程序崩潰的。這是為什麼呢?
重新輸入:http://blog.csdn.net/kenden23就可以正常工作了。
哦,原來必須是以http://開頭的文本才可以正常工作,
這就需要小小處理一下了,這就是算法排上用場的時候啦,字符串處理問題--有點牛刀宰雞的感覺了。
重新定義openBrwoser函數:
private static final String HTTPHEAD = "http://"; public static小技巧:自定義equ的好處是不會把==錯寫成=了。壞處?多寫點代碼。哈哈。boolean equ(T a, T b) { return a == b; } private void openBrowser() { String address = urlText.getText().toString(); address = checkHttpAddress(address); Uri uri = Uri.parse(address); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } private String checkHttpAddress(String address) { int len = HTTPHEAD.length(); len = len < address.length()? len : address.length(); String str = address.substring(0, len); if (equ(str, HTTPHEAD)) { return address; } return HTTPHEAD + address; }
主要是checkHttpAddress這個函數起作用,就是判斷當前用戶的輸入是否帶"http://",如果沒帶,那麼就自動加上,如果帶了,就不用管了。
注意算法的功力,達到無bug。無論用戶輸入什麼字符串,都不會程序崩潰了,不過也許會找不到網站,如下圖:
這樣工作是正常的。故此大功告成!
Android library上傳到jcenter如何把我們開發好的Android library上傳到中央倉庫,供其他開發者方便使用,一行代碼來進行依賴,而不必下載源碼
講到http就必需要了解URI和URL URI (uniform resource identifier)統一資源標志符; URL(uniform resource lo
上篇文章簡單描述了有關如何實現逐幀動畫(Frame Animation),如何還未了解逐幀動畫(Frame Animation)。今天這篇文章就來描述補間動畫(Tween
0x00 序隨著移動安全越來越火,各種調試工具也都層出不窮,但因為環境和需求的不同,並沒有工具是萬能的。另外工具是死的,人是活的,如果能搞懂工具的原理再結合上自身的經驗,