代码之家  ›  专栏  ›  技术社区  ›  Namratha

利用dispatchDraw(Canvas)实现视频预览的分段

  •  0
  • Namratha  · 技术社区  · 16 年前

    下面是在SurfaceView的子类中重写的dispatchDraw。我正在尝试更改曲面的参数(仅获取视频预览的一部分)。

    @覆盖

           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************");
    
        }
    

    1 回复  |  直到 16 年前
        1
  •  1
  •   Romain Guy    16 年前

    因为SurfaceView不使用视图层次的画布来绘制。

    推荐文章