diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SingleFragmentActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SingleFragmentActivity.kt index fcf44f1..cc6190d 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SingleFragmentActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SingleFragmentActivity.kt @@ -92,9 +92,9 @@ class SingleFragmentActivity : BaseActivity() { * 根据页面类型返回对应标题文本 */ private fun getTitleForPage(pageType: PageType): String = when (pageType) { - PageType.FOOD_COLLECT -> "菜品采集" - PageType.COOK_MODE -> "设备配置" - PageType.SEASONING_CONFIG -> "调料配置" + PageType.FOOD_COLLECT -> "食材采样" + PageType.COOK_MODE -> "餐品模式" + PageType.SEASONING_CONFIG -> "调料区设置" } /** diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/CollectFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/CollectFragment.kt index d6d73b4..2e70f9a 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/CollectFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/CollectFragment.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager import androidx.camera.view.PreviewView +import androidx.core.view.doOnLayout import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.GridLayoutManager import com.shuwei.dish.match.R @@ -36,7 +37,7 @@ class CollectFragment : BaseFragment(){ companion object { private const val TAG = "CollectFragment" - const val MAX_COUNT = 9 + const val MAX_COUNT = 18 } private var selectedFoodId: String? = "" @@ -194,7 +195,11 @@ class CollectFragment : BaseFragment(){ initCamera(binding.flCameraPreview) currentActivity.setLifecycleCallback(object : SingleFragmentActivity.LifecycleCallback { override fun onActivityResume() { - cameraUtils.bind() + // 首次进入时 previewView 尚未 attach,由 doOnLayout 负责首次 bind + // 从后台切回时 previewView 已 attach,直接 bind 恢复预览 + if (::previewView.isInitialized && previewView.isAttachedToWindow) { + cameraUtils.bind() + } } override fun onActivityPause() { @@ -355,7 +360,7 @@ class CollectFragment : BaseFragment(){ override fun onResume() { super.onResume() - if (isVisible.not()) return + // 不使用 isVisible 判断,首次打开时 View 尚未 attach 到 Window,isVisible 会返回 false 导致遮罩永不隐藏 binding.llCameraFlag.run { visibility = View.VISIBLE postDelayed({ @@ -408,6 +413,10 @@ class CollectFragment : BaseFragment(){ } } cameraUtils.setPreviewController(previewView) + // doOnLayout 确保 previewView 测量完成(有有效尺寸和 Surface)后再 bind,解决首次打开无预览问题 + previewView.doOnLayout { + cameraUtils.bind() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt b/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt index f79ccbe..6fc05cd 100644 --- a/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt +++ b/app/src/main/java/com/shuwei/dish/match/utils/CameraUtils.kt @@ -64,7 +64,7 @@ class CameraUtils(private var activity: ComponentActivity) { ) cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA } - bind() + // bind() 由外部在 previewView attach 到窗口后调用,避免首次无预览 } // if (isCameraReady.not()) {