【发布时间】:2021-04-11 04:20:24
【问题描述】:
我无法更改其他函数中的视图可见性,而不是 onCreate 方法。它只在onCreate 时工作。
public class CameraXActivity extends AppCompatActivity {
...
public Group fipGroup;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camerax_layout); // Created xml using constraintLayout.
//intial setup
fipGroup = (Group)findViewById(R.id.fip_group);
startCamera();
//hideFipGroup(); <<--- This is working
}
private void hideFipGroup() {
Log.d(TAG, "=== hideFipGroup ===");
fipGroup.setVisibility(View.INVISIBLE);
}
private void startCamera() {
CameraX.unbindAll();
preview = setPreview();
imageAnalysis = setImageAnalysis();
//bind to lifecycle:
CameraX.bindToLifecycle(this, preview , imageAnalysis);
preview.enableTorch(true);
}
private ImageAnalysis setImageAnalysis() {
hideFipGroup() // This is working
imageAnalysis.setAnalyzer(
new ImageAnalysis.Analyzer() {
@Override
public void analyze(ImageProxy image, int rotationDegrees) {
hideFipGroup() // Exactly, Failed at this place.
}
}
)
}
}
编辑更新:
无法更新imageAnalysis 的analyze 方法。只是为了测试,在 UI 上显示的称为 toast 消息。但我无法控制 UI。
private void raiseToast(String msg) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 500);
toast.show();
}
});
}
【问题讨论】:
-
我敢打赌,您的代码的“完整版”中有一些棘手/错误的方法,这对您的情况至关重要,而您刚刚将其删除...例如
startCamera中的一些悬挂 UI 代码代替了三个点。发布的代码非常好并且可以工作(两个调用) -
更新了代码 sn-p。 @snachmsm
-
当您注释掉
CameraX.unbindAll();行和下面的所有startCamera是否有效?它只会调用hideFipGroup() -
@snachmsm 我有更新的完整代码。刚刚追踪了这个问题。未能更新 imageAnalysis 的
analyze方法。知道我们如何处理这个地方吗? -
使用
fipGroup.post(...)方法在analyze内部调用hideFipGroup
标签: android visibility android-camerax