1、主要记录自己在学习过程中遇到的一些简要的问题清单
在 Kotlin 中,with
函数(也称为扩展函数)用于将一个对象作为上下文,并在其上下文中执行代码块。当你使用 with
函数时,你传递一个对象作为参数,然后在代码块中可以使用这个对象。
在 Android 开发中,MainActivity.parentThis
通常指的是 MainActivity
的父对象,可能是 Activity
或其他类型的对象。with
函数允许你以一种简洁的方式访问这个对象,并在代码块中使用它。
在您提供的代码中,with(MainActivity.parentThis){ ... }
是一个 with
函数的调用,它将 MainActivity
的父对象作为上下文。在代码块中,你检查 _uiState.value.isFullScreen
条件,并根据条件设置屏幕方向。
例如,如果 _uiState.value.isFullScreen
为 false
,那么屏幕方向设置为 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
;如果为 true
,则设置为 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
。
with
函数的优点是它可以减少代码的重复,并使代码更易于阅读和维护。它还可以帮助避免硬编码对象引用,从而使代码更易于测试和重构。
fun setScreenOrientation(){
//不能直接使用context.setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
//因为这个函数不是在APP里面创建的,因为实在Mainaicitity当中创建的,所以采用with的写法才行
with(MainActivity.parentThis){
if (!_uiState.value.isFullScreen){
setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
}else{
setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
}
}
_uiState.value = uiState.value.copy(isFullScreen = !_uiState.value.isFullScreen)
// when(uiState.value.isFullScreen){
// //设置全屏--值为false则设置全屏--为true则设置为小平
// false ->{
// Log.d("setScreenOrientation","进入全屏状态--false--")
// setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
// _uiState.value = uiState.value.copy(isFullScreen = true)
// }
// true ->{
// Log.d("setScreenOrientation","关掉全屏状态--true----")
// context.setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
// _uiState.value = uiState.value.copy(isFullScreen = false)
// }
// }
像上面这个代码,因为错误的运用了context上下文内容,导致一直运行不成功导致