編輯:Android開發教程
作為IT新手,總以為只要有時間,有精力,什麼東西都能做出來。這種念頭我也有過,但很快就熄滅了, 因為現實是殘酷的,就算一開始的時間和精力非常充足,也會隨著項目的推進而逐步消磨殆盡。我們會發現, 自己越來越消極怠工,只是在無意義的敲代碼,敲的還是網上抄來的代碼,如果不行,繼續找。
這就 是項目進度沒有規劃好而導致的。
最近在做有關藍牙的項目,一開始的進度都安排得很順利,但是因 為測試需要兩部手機,而且還要是android手機,暑假已經開始了,同學們都回家了,加上我手機的藍牙壞了 ,導致我的進度嚴重被打亂!而且更加可怕的是,就算我手機這邊調試完畢,我最終的目標是實現手機與藍牙 模塊的通信,那個測試板至今未送過來,所以,我開始消極怠工了。
經驗教訓非常簡單:根據整個項 目的時間長度規劃好每天的進度,視實際情況的變化而改變規劃,就算真的是無法開展工作,像是現在這樣抽 空出來寫寫博客都要好過無意義的敲代碼。
今天講的內容非常簡單,只是講講有關於android界面更新 的方面。
1.利用Looper更新UI界面
如果我們的代碼需要隨時將處理後的數據交給UI更新,那麼 我們想到的方法就是另開一個線程更新數據(也必須這麼做,如果我們的數據更新運算量較大,就會阻塞UI線 程),也就是界面更新和數據更新是在不同線程中(android采用的是UI單線程模型,所以我們也只能在主線程 中對UI進行操作),但這會導致另一個問題:如何在兩個線程間通信呢?android提供了Handler機制來保證這 種通信。
先是一個簡單的例子:
public class MainActivity extends Activity { private Button mButton; private TextView mText; @SuppressLint("HandlerLeak") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button)this.findViewById(R.id.button); mText = (TextView)this.findViewById(R.id.text); final Handler handler = new Handler(){ @Override public void handleMessage(Message msg){ super.handleMessage(msg); if(msg.what == 1){ mText.setText("更新後"); } } }; mText.setText("更新前"); final Thread thread = new Thread(new Runnable(){ @Override public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { thread.start(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Google馬上就要正式發布Android 4.4 KitKat了。據我們現在所知,一些新的用戶界面預示著這次的操作系統將有一些新的改變,比如說重新設計的電話應用,比如說
我們都知道,Android上的界面展示都是通過Activity實現的,Activity實在是太常用了,我相信大家都 已經非常熟悉了,這裡就不再贅述。但是Activity也
Android系統的分銷模式注定帶來了碎片化問題,廠商可以按照自己的市場定位和運營商特殊需求來定制自己的設備,這就導致了Android平台凌亂的分辨率和版本分布。今天Fo
WebView能夠讓你在activity中去內嵌一個web浏覽器。如果你的應用需要內嵌一些web內容的話,這是非 常有用的。下面展示如何在activity中通過編碼的方式