歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

利用Handler來更新Android的UI

剛剛開始接觸Android線程編程的時候,習慣好像Java一樣,試圖用下面的代碼解決問題

 new Thread( new Runnable() { 
    public void run() { 
        myView.invalidate(); 
    }         
}).start(); 

然而發現這樣是不行的,因為它違背了單線程模型:Android UI操作並不是線程安全的並且這些操作必須在UI線程中執行。查閱了文檔和apidemo後,發覺常用的方法是利用Handler來實現UI線程的更新的。

下面代碼的功能很簡單:畫一個圓出來,每隔0.1秒,圓向10移動10個像素。但可以清楚展示利用Handler更新UI的流程。

首先創建簡單的View,代碼如下:

package com.ray.handler;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.view.View;

public class BounceView extends View {
    float x = 40;
   
    public BounceView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
     x+=10;
     Paint mPaint = new Paint();
     mPaint.setAntiAlias(true);
     mPaint.setColor(Color.GREEN);
     canvas.drawCircle(x, 40, 40, mPaint);
    }
}

Copyright © Linux教程網 All Rights Reserved