Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> 利用Handler更新Android UI的另一種方法

利用Handler更新Android UI的另一種方法

編輯:初級開發

其實文字游戲程序很簡單,就是一個view和一個Activity,在利用下handIEr和postInvalidate()更新UI
我要實現的是一個藍色正方形向右移出屏

調用Handler.post(Runnable r)方法,Runnable運行在UI所在線程,所以可以直接調用VIEw.invalidate() 
1 package com.Test.androidtest;    
2    
3 import android.app.Activity;    
4 import android.content.Context;    
5 import android.graphics.Canvas;    
6 import android.graphics.Color;    
7 import android.graphics.Paint;    
8 import android.os.Bundle;    
9 import android.os.Handler;   
10 import android.view.VIEw;   
11   
12 public class TestHandler extends Activity {   
13     private MyView myVIEw;   
14     private Handler mHandler;   
15     public void onCreate(Bundle savedInstanceState) {   
16         super.onCreate(savedInstanceState);   
17         myView = new MyVIEw(this);   
18         mHandler = new Handler();   
19         mHandler.post(new Runnable(){   
20             @Override  
21             public void run() {   
22                 myVIEw.invalidate();   
23                 mHandler.postDelayed(this, 5);   
24             }   
25          });   
26         setContentView(myVIEw);   
27     }   
28        
29     class MyView extends VIEw{   
30         private float x = 0f;   
31         public MyVIEw(Context context) {   
32             super(context);   
33                
34     }   
35         protected void onDraw(Canvas canvas) {  
36             super.onDraw(canvas);   
37             x+=1;   
38             Paint mPaint = new Paint();   
39             mPaint.setColor(Color.BLUE);   
40             canvas.drawRect(x, 40, x+40, 80, mPaint);  
41         }  
42            
43     }  
44 }  
45

在新線程裡更新UI,可以直接postInvalidate()

1 public void onCreate(Bundle savedInstanceState) {       
2                super.onCreate(savedInstanceState);       
3                this.requestWindowFeature(Window.FEATURE_NO_TITLE);       
4        
5                myView = new MyVIEw(this);   
6        this.setContentView(this.myVIEw);       
7        new Thread(new myThread()).start();      
8 }       
9      
10     class myThread implements Runnable {       
11           public void run() {      
12               while (!Thread.currentThread().isInterrupted()) {       
13                    try {   
14                           myVIEw.postInvalidate();    
15                         Thread.sleep(100);        
16                    } catch (InterruptedException e) {       
17                         Thread.currentThread().interrupt();       
18                    }       
19                }       
20           }       
21     }   
22

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved