小编Pun*_*eet的帖子

Android相机预览很暗

我正在尝试创建一个自定义相机应用程序.我从这里跟随Android Developer示例进行了一些小调整.但是,我的相机预览结果相当暗.另一方面,照相机提供了更加明亮的预览.

我已经尝试了几种设置以使其更好地工作,但似乎它们都没有任何影响.相关代码发布在这里.

CameraActivity(主要)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera);
    if(CameraHelper.checkCameraHardware(this)) {
        mHelper = new CameraHelper(this, getWindowManager().getDefaultDisplay());
    }

    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    mPreview = new CameraPreview(this, CameraHelper.camera);
    mPreview.setLayoutParams(new LayoutParams(CameraHelper.mSize.width, CameraHelper.mSize.height, Gravity.CENTER));

    preview.addView(mPreview);

}
Run Code Online (Sandbox Code Playgroud)

CameraHelper类(初始化摄像头并设置默认参数)

    public CameraHelper(CameraListener listener, Display display){
        mListener = listener;
        camera = getCameraInstance();

        mParameters = camera.getParameters();
        initCameraParameters();

        mSize = getPreviewSize(display);
        mParameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
        mParameters.setPictureSize(2560, 1920);

        mParameters.setAutoExposureLock(false);
        mParameters.setAutoWhiteBalanceLock(false);
        mParameters.set("iso", "ISO800"); //Tried with 400, 800, 600 (values obtained from flatten())
        mParameters.setColorEffect("none");
        mParameters.setPictureSize(2560, 1920);
        mParameters.setPreviewFrameRate(20);
        mParameters.set("scene-mode", "auto");
        mParameters.setFocusMode("auto");
        mParameters.setExposureCompensation(4);     
        camera.setParameters(mParameters); …
Run Code Online (Sandbox Code Playgroud)

camera android iso preview

11
推荐指数
2
解决办法
8707
查看次数

填充 RecyclerView 后底部工作表对话框跳起来

我遇到了一个奇怪的问题。该应用程序的流程如下:

  1. 触发底部工作表对话框。
  2. 对话片段对服务器进行 api 调用。
  3. 等待响应时显示微调器
  4. 当收到响应时,会填充 Recycler 视图和一些 TextViews。
  5. 一旦 Recycler View 更新,对话框就会从底部跳起来,不再附加到基础上。但是,如果我们滚动 Recycler View,则返回到正常位置。

实际的

当前行为

预期的

预期的

底部工作表对话框相关代码:

        //We have to override this method to ensure that the Bottom Sheet opens in expanded mode.
        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

            BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);

            dialog.setOnShowListener(dialog1 -> {
                BottomSheetDialog d = (BottomSheetDialog) dialog1;

                FrameLayout bottomSheet = d.findViewById(com.google.android.material.R.id.design_bottom_sheet);
                BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
            });

            return dialog;
        }

@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        views.layoutCartItem.setLayoutManager(new LinearLayoutManager(getContext()));
        views.layoutCartItem.setItemAnimator(new …
Run Code Online (Sandbox Code Playgroud)

android android-bottomsheetdialog

6
推荐指数
1
解决办法
1487
查看次数