編輯:關於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;"> 知識點: 1 使用LinearLayout布局,添加一個EditText就是圖片的第一有一個下橫線的框,接受網址的輸入注意其中的layout_width的設置,為零,那麼後面的layout_weight="1.0"就使得框格擴展所有該行余下的空間了,故此直接設置layout_width為零就可以了。 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 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; }小技巧:自定義equ的好處是不會把==錯寫成=了。壞處?多寫點代碼。哈哈。 主要是checkHttpAddress這個函數起作用,就是判斷當前用戶的輸入是否帶"http://",如果沒帶,那麼就自動加上,如果帶了,就不用管了。 注意算法的功力,達到無bug。無論用戶輸入什麼字符串,都不會程序崩潰了,不過也許會找不到網站,如下圖: 這樣工作是正常的。故此大功告成!
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; } }); }
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); }
到此為止,整個程序就可以運行了。
但是現在問題來了:
如果輸入blog.csdn.net/kenden23,那麼就會程序崩潰的。這是為什麼呢?
重新輸入:http://blog.csdn.net/kenden23就可以正常工作了。
哦,原來必須是以http://開頭的文本才可以正常工作,
這就需要小小處理一下了,這就是算法排上用場的時候啦,字符串處理問題--有點牛刀宰雞的感覺了。
重新定義openBrwoser函數:
private static final String HTTPHEAD = "http://"; public static 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 序隨著移動安全越來越火,各種調試工具也都層出不窮,但因為環境和需求的不同,並沒有工具是萬能的。另外工具是死的,人是活的,如果能搞懂工具的原理再結合上自身的經驗,
Builder模式是一種設計模式,最初被介紹於《設計模式:可復用面向對象
本文實例講述了Android編程之頁面切換測試。分享給大家供大家參考。具
閒來無聊,最近了解了一下多媒體的一些初步知識。音頻播放主要設計到Medi
知識點今天繼續昨天沒有講完的Menu的學習,主要是Popup Menu的