Android Studio 学习杂记

⚠️ 本文最后更新于2024年08月12日,已经过了260天没有更新,若内容或图片失效,请留言反馈

笨蛋开始学习 Android Studio 了!

  1. 软件设置代理
    Jetbrains 的所有集成开发环境都要手动设置代理!具体位置在
设置 -> 外观与行为 -> 系统设置 -> HTTP 代理

选择手动配置代理!本地开全局魔法的话就用

主机 127.0.0.1
端口 (看魔法软件上到底是哪个!)

clash 的默认端口是 10808!

nekobox 的默认端口是 2080!

  1. 软件汉化
    Jetbrains 的大部分集成开发环境的汉化包都是通用的!所以去插件市场找 IntelliJ Idea 的汉化插件然后下载,给 Android Studio 从磁盘安装就好了!
  2. 学习过程
    1.搭建UI界面
    使用Column布局和Row布局可以规定该布局下属的元素是垂直排列还是水平排列,通过verticalArrangementhorizontalAlignment可以调整他们在垂直方向与水平方向的对齐排列方式与内部元素占用父元素的位置与大小
    每个UI界面搭建函数都应该接收modifier参数,写法是

    @Composable
    fun EditNumberField(modifier: Modifier = Modifier)

    这让该函数可以接收modifier参数,modifier参数相当于CSS,决定该UI的样式,而如果没有传入modifier参数,它将使用默认modifier作为自己的modifier。

    2.储存与改变界面内容

    使用可组合函数构建界面时,可组合函数是无状态的,他们不会储存值(除非硬编码在里面)或改变已有的值,为此必须通过remeber才能将值储存到内存中
    但是remeber是个可组合函数,需要在里面通过 mutableStateOf(value)存入一个可观察对象(类似一个监听对象是否改变的事件监听),才可以储存变量到内存中;譬如我们要储存一个result的值为1
    var result by remember { mutableStateOf(1) }
    当result改变时,界面上的内容也会改变
    记得使用var让该值可变!而不是val

    3.创建输入框

    @Composable
    fun EditNumberField(modifier: Modifier = Modifier){
    var amountInput = mutableStateOf("0")
    TextField(
        value = amountInput,
        onValueChange = { amountInput = it},
        modifier = Modifier
    )
    }

    通过上面的一段代码可以创建一个实时显示输入内容的输入框,输入框中的默认值为value在输入框内容被修改时便会调用onValueChange中的内容,其中的关键字it代表当前输入框内的value,但实际上这段代码并不会让输入框显示出输入的内容,而是会一直显示0。
    这是因为onValueChange修改了可观察对象的数据,触发了数据修改的监听事件,让界面重新执行了EditNumberField函数,并在函数的第一行执行了var amountInput = mutableStateOf("0")导致输入框内的值永远为0
    解决方案如下

    @Composable
    fun EditNumberField(modifier: Modifier = Modifier){
    var amountInput by remember {
        mutableStateOf("")
    }
    TextField(
        value = amountInput,
        onValueChange = { amountInput = it},
        modifier = Modifier
    )
    }

    在加入remeber时,重绘代码会先在内存中寻找已储存的值,这样就可以显示出输入的内容了,因为onValueChange先触发,输入框中的数据保存到了amountInput变量中,并且该变量值会被储存在内存中,并且是个可观察对象,由于可观察对象被修改触发EditNumberField函数的再次执行,但在这次重绘时amountInput的值将会从内存中找,而不是被硬编码赋值为0

By 莎莎 On
  1. 头像
    @
    😎
    · Windows · Chrome