編輯:關於Android編程
這幾天雖說偶遇瓶頸,但也漸入佳境,由於之前沒有接觸過android,所以作為一個新手不會給自己過高的要求。相比於去年做的分布式資源檢索,今年的移動開發著實要簡單一些,雖然其本質沒有太大的區別,但從用戶體驗方面來說更能激發每一位學習者的興趣,這可能就是android的魅力所在吧...
前天做的“電話撥號器”,最後加載到模擬器的時候不知道哪裡出了錯,系統總是自動關閉,惱羞成怒也就沒再搭理它;昨天又做了“短信發送器”,也遇到了和前者相似的問題,不過最後經過調試算是研制成功了吧,因此調整了前者,相同的解決方案,外瑞古德~~~那接下來就以“短信發送器”為例談談自己的一些學習心得吧...
首先上圖一張:
咱先來說說這個短信發送器的基本構造,大家從上圖也可看出,其大體可分為五部分,其實也就是兩條提示+兩個輸入框,還有一個發送按鈕。那麼這五部分是怎麼出來的,先來看一小段代碼:
這塊代碼是定義短信輸入框的,最上邊的"@+id/et_word”是在R.java文件中添加一個名為et_word的id,也就是聲明了我們這個輸入框;lines=“5”規定了這個輸入框為五行,這個長度一般可以滿足我們的需求;而下邊的四個layout屬性定義了這個文本框的長寬和相對位置,其屬性值大家可以好好了解一下,都很有意思,其中第三個的意思是文本框的位置在id為tv_ism的下方,而tv_ism便是我們所看到的“請輸入短信內容”;最後定義了短信輸入框的類型。其他幾塊內容都和其類似,當然還有很多的屬性,大家可以查看其API了解一下。
UI設計的相對簡陋,還望大家多多包涵,接下來就是賦予其相應的功能了,再上代碼一大塊:
public class MainActivity extends Activity implements OnClickListener { private EditText et_word; private EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number=(EditText)findViewById(R.id.et_number); et_word=(EditText)findViewById(R.id.et_word); Button bt_sent=(Button)findViewById(R.id.bt_sent); bt_sent.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_sent: String word=et_word.getText().toString().trim(); String number=et_number.getText().toString().trim(); if(TextUtils.isEmpty(word)||TextUtils.isEmpty(number)){ Toast.makeText(this, "電話號碼或者短信內容不能為空", Toast.LENGTH_SHORT).show(); return; }else{ SmsManager smsManager=SmsManager.getDefault(); ArrayListwords=smsManager.divideMessage(word); for(String str:words){ smsManager.sendTextMessage(number, null, str, null, null); } } break; } } }
我們先從實際出發,要想使短信發送器能夠發送短信,首先要找到發送按鈕,但我們點擊按鈕時,系統會找到短信內容和想要發送的號碼,然後實現其功能,大體上也就是分為這三步。
於是乎我們先找到按鈕:Button bt_sent=(Button)findViewById(R.id.bt_sent); bt_sent.setOnClickListener(this);這裡邊涉及了幾個常用的方法,大家看其表面意思也能了解,先通過id找到按鈕,然後調用其方法設定點擊事件;下邊的onClick(View v)為接口OnClickListener的實現方法,當的得到的id為R.id.bt_sent時執行一系列的操作;上邊的et_number、et_word和bt_sent是一樣的,先通過id找到他們,然後利用他們自身的方法提取電話號碼和短信內容;接下來就是判斷電話號碼或者短信內容是否為空,相信大家都有這樣的常識,二者有一方為空則不能發送短信;關於Toast大家可以去查一查,翻譯成中文為“吐絲面包”,它主要是給用戶一個提示,它調用的方法有三個參數,這個一開始不大好理解,不過通過該例大家也能猜出它的大概意思,其中第三個參數為顯示時長,最後不要忘了調用Toast的show()返回值。如果號碼或內容不為空的話那就執行else裡的語句,提取短信內容,如果發送內容過長,超過規定的70個漢字或者160個字符便對其進行分段,這時要用到ArrayList
還需要注意的一點就是SmsManager smsManager=SmsManager.getDefault();這條語句,它之前默認導入的包已經過期,所以需要導入新的包,這個到時候會有提示。
ok,這樣一個簡易的短信發送器便搭建完成了,啟動兩個模擬器便可進行實驗,就如上圖所示,發送短文本和長文本的區別也一目了然。今天將繼續深入了解四種布局,UI時代到來,敬請期待……
在上一篇文章當中,我們學習了DiskLruCache的概念和基本用法,但僅僅是掌握理論知識顯然是不夠的,那麼本篇文章我們就來繼續進階一下,看一看在實戰當中應
之前一直都是看別人寫的啟動模式,發現網上大多數的內容都是抄襲來抄襲去,直到最近看了開發藝術這本書,發現之前對啟動模式的理解過於簡單,很多東西都沒有考慮到,為了加深理解,於
目錄概述StickHeaderItemDecoration是用於顯示固定頭部的item裝飾類,擴展來自系統的ItemDecoration.本文參考了一部分sticky-h
AdapterView的子類的子類ListView、GridView、Spinner、Gallery、AdapterViewFlipper和StackView都是作為容器