Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用dispatchDraw(Canvas)获取视频预览的分段_Android_Video_Canvas_Matrix_Preview - Fatal编程技术网

Android 使用dispatchDraw(Canvas)获取视频预览的分段

Android 使用dispatchDraw(Canvas)获取视频预览的分段,android,video,canvas,matrix,preview,Android,Video,Canvas,Matrix,Preview,以下是SurfaceView子类中重写的dispatchDraw。我正在尝试更改曲面的参数(仅获取视频预览的一部分) @凌驾 public void dispatchDraw (Canvas canvas) { Log.d(TAG,"**************inside dispatchDraw************"); int VIEW_WIDTH = canvas.getWidth(); int VIEW_HEIGHT

以下是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************");

    }

为什么上面的代码根本不改变SurfaceView的维度?

因为SurfaceView不使用视图层次结构的画布进行绘制。

谢谢!但是如果它不使用画布,那么dispatchDraw中的参数指的是什么?SurfaceView将绘制到曲面中?我如何获得预览的一部分?我需要做什么我必须改变吗?