2010-12-20 108 views
0

我有一个自定义视图。何时将android调用draw()呢?它调用onMeasure和onLayout之后?ANDROID:自定义视图实现

'package global.domination.pack; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.util.Log; 
import android.view.View; 

public class TileView extends View { 

    // rules about what can be and is on this tile 
    boolean bLand; 
    boolean bSea; 
    boolean bAir; 
    boolean bOccupied; 
    Character _character; 

    // this tile's coordinates 
    int nX; 
    int nY; 

    // bitmaps used for drawing this tile 
    Bitmap _originalBitmap; 
    Bitmap _finalBitmap; 

    // this constructor initializes all variables (creates the tile) 
    public TileView(Context context, boolean isLand, boolean isSea, boolean isAir, boolean isOccupied, int x_Coordinate, int y_Coordinate, Bitmap bitmap) { 
     super(context); 

     //Initialize variables and set tile graphic. 
     bLand   = isLand; 
     bSea   = isSea; 
     bAir   = isAir; 
     bOccupied  = isOccupied; 
     nX    = x_Coordinate; 
     nY    = y_Coordinate; 
     _originalBitmap = bitmap; 
     _character  = null; 
     _finalBitmap = bitmap; 
    } 


    /* This method is called by parent view when it 
    * wants to know this view's drawing preferences 
    */ 
    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // set this tiles dimensions 
     this.setMeasuredDimension(50, 50); 
    } 

    /* This method is called by parent view when it wants 
    * this view to draw itself. 
    */ 
    @Override 
    protected void onDraw(Canvas canvas) {  
     // attempt to draw the _finalBitmap (tile graphic with character graphic) 
     try{ 
      canvas.drawBitmap(_finalBitmap, 0, 0, null); 
     } 
     catch(RuntimeException rtException){ 
      Log.e("EXCEPTION", "ERROR DRAWING FINAL BITMAP" + rtException.getMessage() , rtException); 
     }    
    } 
} 
' 
+0

请添加一些代码片段以更清楚地了解 – srinathhs 2010-12-20 03:53:15

回答

0

你重写ViewGroup S的onMeasure()?如果是这样,你需要记住致电measure()对你的孩子的意见。

+0

对不起。是的,我的自定义ViewGroup(这个视图添加到)调用measure()就像它假设的那样。 onMeasure()和onLayout()按预期完成,但draw()永远不会被调用。 – user537215 2010-12-20 05:16:07