編輯:關於Android編程
handler是什麼?
handler是android給我們提供用來更新UI的一套機制,也是一套消息處理的機制,我們可以發送消息,也可以通過他處理消息。
為什麼要用handler?
Android在設計的時候,就封裝了一套消息創建,傳遞,處理機制,如果不遵循這樣的機制,就沒有辦法更新UI消息了,就會拋出異常消息。
handler用法(一)
代碼示例:
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv1);
new Thread(){
public void run() {
try {
Thread.sleep(1000);
//更新文本信息
tv.setText("update Thread");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
異常原因:只能在原線程中更新UI
利用Handler更新UI,可以執行成功
public class MainActivity extends Activity {
private TextView tv;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv1);
new Thread(){
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//更新文本信息
tv.setText("update Thread");
}
});
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
}
利用handrle做一個圖片輪詢的示例:
public class MainActivity extends Activity {
private TextView tv;
private ImageView img;
private Handler handler = new Handler();
private int images[] = {R.drawable.one,R.drawable.two,R.drawable.three};
private int index;
private MyRunnable myRunnable= new MyRunnable();
class MyRunnable implements Runnable{
/**
* TODO 簡單描述該重寫方法的實現功能(可選).
* @author Administrator 2014-12-25
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
index ++;
index = index%3;
img.setImageResource(images[index]);
handler.postDelayed(myRunnable, 1000);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv1);
img = (ImageView) findViewById(R.id.imageView1);
handler.postDelayed(myRunnable, 1000);
}
}
該例子實現的是從網絡上異步獲取數據,包括圖片與文字,然後顯示在listView中,並對圖片進行內存緩存。程序截圖第一次錄制gif。。。效果很差首先定義布局主界面就一個li
1:聲明式異常處理什麼是聲明式:就是在web.xml中聲明對各種異常的處理方法。是通過元素來聲明的,下面有幾個子元素如下圖error-code:http錯誤代碼excep
引言上一篇文章主要是介紹了ViewPager和PagerAdapter的功能原理,正所謂光說不練空把式,很多時候聽別人說起來,感覺什麼都懂了,但是真正地拋開一切自己去寫,
起因: 最近在做一個新聞APP,看到現在的新聞客戶端頂端都有個熱點新聞輪播。思路:viewpager可以用來顯示圖片,並且可以提供滑動,15年(不知記錯沒)新出的TabL