2010-07-29 9 views
0

Ce qui suit est le dispatchDraw redéfini dans une sous-classe de SurfaceView. Je suis en train de changer les paramètres de la surface (obtenir seulement une sous-section de l'aperçu vidéo.en utilisant dispatchDraw (Canvas) pour obtenir la sous-section de l'aperçu vidéo

@Override

 public void dispatchDraw (Canvas canvas) { 
     Log.d(TAG,"**************inside dispatchDraw************"); 

     int VIEW_WIDTH = canvas.getWidth(); 
     int VIEW_HEIGHT = canvas.getHeight(); 
     Log.d(TAG,"**************inside dispatchDraw************" + Integer.toString(VIEW_WIDTH) + " ," + Integer.toString(VIEW_HEIGHT)); 

     int newWidth = 400; 

     int newHeight = 240; 
     float scaleWidth = ((float) newWidth)/VIEW_WIDTH; 

     float scaleHeight = ((float) newHeight)/VIEW_HEIGHT; 


     Matrix matrix = new Matrix(); 

     matrix.postScale(scaleWidth, scaleHeight); 

     canvas.setMatrix(matrix); 
     super.dispatchDraw(canvas); 
     Log.d(TAG,"**************inside dispatchDraw-after super************"); 

    } 

Pourquoi le code ci-dessus ne modifie les dimensions du SurfaceView du tout

?

Répondre

1

Parce que SurfaceView ne pas utiliser la hiérarchie de toile de vue de dessiner.

+0

merci! Mais si elle ne pas utiliser le canevas, alors qu'est-ce que le paramètre dispatchDraw reportez-vous à ? SurfaceView tire dans la Surface? Comment puis-je obtenir une sous-section de l'aperçu? Qu'est-ce que je dois modifier? – Namratha