onCreate回调中获取view大小为0,ViewTreeObserver,无限回调OnGlobalLayoutListener


在oncreate中获取view大小为0 的解决办法:



        //处理oncreate时, seekbar宽度为0.
        ViewTreeObserver observer = brightnessProgressBar.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                vProgressText.setVisibility(View.VISIBLE);
                setScreenBrightnessViewUI(mDisplayViewInfo);
                brightnessProgressBar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });


通过ViewTreeObserver 的onGlobalLayout 后可以正常获取大小。


防止出现无限回调onGlobalLayout , 要remove 回调

方法如上代码:

  brightnessProgressBar.getViewTreeObserver().removeOnGlobalLayoutListener(this);



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在onCaptureCompleted回调,您可以使用CaptureResult的CaptureResult.STATISTICS_JPEG和CaptureResult.JPEG_ORIENTATION常量来获取JPEG图像的相关信息。然而,这些常量并不能直接获得拍摄的图像数据。要获取拍摄的图像数据,您需要在创建CaptureRequest对象时设置CaptureRequest.JPEG_ORIENTATION并使用ImageReader类接收JPEG图像。 下面是一个示例代码片段,展示如何在onCaptureCompleted回调获取拍摄的图像数据: ```java private ImageReader mImageReader; private int mImageWidth = 640; private int mImageHeight = 480; // 在onCreate方法创建ImageReader mImageReader = ImageReader.newInstance(mImageWidth, mImageHeight, ImageFormat.JPEG, 1); mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() { @Override public void onImageAvailable(ImageReader reader) { // 在这里处理图像数据 Image image = reader.acquireLatestImage(); // TODO: 处理JPEG图像 image.close(); } }, null); // 在拍照时,设置CaptureRequest.JPEG_ORIENTATION并提交CaptureRequest CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(mImageReader.getSurface()); captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getJpegOrientation()); mCameraCaptureSession.capture(captureBuilder.build(), null, null); // 在onCaptureCompleted回调,可以获取JPEG图像的相关信息 @Override public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) { int orientation = result.get(CaptureResult.JPEG_ORIENTATION); // TODO: 处理JPEG图像方向 } ``` 在上面的示例代码,我们使用了ImageReader类来接收JPEG图像。在拍照时,我们设置了CaptureRequest.JPEG_ORIENTATION,并将ImageReader的Surface添加到CaptureRequest。在onImageAvailable回调,我们可以获取到JPEG图像的数据,并在这里进行处理。同时,在onCaptureCompleted回调,我们可以获取JPEG图像的方向信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值