小编Gio*_*ous的帖子

Kotlin 中多个 init 块的用例?

我注意到 Kotlin 中的类可以有多个 init 块。如果是,它们将按顺序执行。

拥有多个的好用例是什么?

kotlin

9
推荐指数
2
解决办法
734
查看次数

LiveData:从 Observer lambda 内部删除观察者

在我的片段中,我观察到一个实时数据:

 viewModel.emailValid.observe(
     this,
     Observer<GenericResponse> {
         dismissProgressBar()
         if (it != null && it.success) {
             findNavController().navigate(R.id.action_navigatesomewhere)
         }
     }
)
Run Code Online (Sandbox Code Playgroud)

现在在调用navigate()之前,我想从viewModel.emailValid 中删除观察者,并且我已经看到需要观察者作为参数的可用removeObserver方法。可以以某种方式引用观察者 lambda 中的观察者吗?

android kotlin android-livedata android-viewmodel

7
推荐指数
2
解决办法
6050
查看次数

如何取消和替换 Kotlin 协程调用

我正在我当前的 Android 应用程序中试验 Kotlin 协程。

我有一个用例,用户可以使用远程 RestFul API 搜索文本。

我想实现的目标如下:-

1)。使用类型“ABC”,我在此搜索字符串中启动我的远程 API

viewModelScope.launch {
  repository.searchAPI(searchString)
}
Run Code Online (Sandbox Code Playgroud)

2)。用户现在输入更多,以便我的搜索字符串现在是“ABCXYZ”

我现在希望取消对“ABC”的初始搜索并将其替换为“ABCXYZ”的新搜索字符串

我以为我可以使用此代码...

viewModelScope.launch {

  if (isActive) {
    this.coroutineContext.cancelChildren()
  }

  repository.searchAPI(searchString)
}
Run Code Online (Sandbox Code Playgroud)

然而,这取消了整个过程

我怎样才能达到用最近的搜索字符串替换当前正在执行的搜索的预期结果?

android kotlin kotlin-coroutines

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

android 如何用动画放大和返回?

我一直在尝试放大视图,然后通过像动画一样缩小返回到原始大小。

我能够做的是将放大和缩小放在一组中,并在单击按钮时在图像视图上对其进行动画处理,但它第一次突然减小图像大小,然后在以后的单击时进行良好的动画处理。我将不胜感激任何有助于完成流畅动画的帮助

我的代码

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    >
    <scale
        android:duration="1000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale=".5"
        android:toYScale=".5" >
    </scale>
    <scale
        android:duration="1000"
        android:fromXScale=".5"
        android:fromYScale=".5"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" >
    </scale>

</set>
Run Code Online (Sandbox Code Playgroud)
final Animation ani_in = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.zoomin_out);
imageView.startAnimation(ani_in);
Run Code Online (Sandbox Code Playgroud)

android android-animation

6
推荐指数
2
解决办法
4955
查看次数

无法执行 apkanalyzer

我正在尝试从命令行apkanalyzer从 Android SDK 工具运行。但是,它不会启动并打印以下异常:

Exception in thread "main" java.lang.IllegalStateException: The tools directory property is not set, please make sure you are executing apkanalyzer. Got /home/user/Programs/android-sdk-linux/tools
    at com.android.tools.apk.analyzer.ApkAnalyzerCli.getAaptInvokerFromSdk(ApkAnalyzerCli.java:266)
    at com.android.tools.apk.analyzer.ApkAnalyzerCli.main(ApkAnalyzerCli.java:123)
Run Code Online (Sandbox Code Playgroud)

我的命令行是:

~/Programs/android-sdk-linux$ tools/bin/apkanalyzer apk summary ~/projects/mservice.apk
Run Code Online (Sandbox Code Playgroud)

ANDROID_SDK_ROOT 设置。

这是我的安装(sdkmanager --list):

Installed packages:=====================] 100% Computing updates...             
  Path                 | Version | Description                    | Location             
  -------              | ------- | -------                        | -------              
  build-tools;28.0.3   | 28.0.3  | Android SDK Build-Tools 28.0.3 | build-tools/28.0.3/  
  build-tools;29.0.2   | 29.0.2  | Android SDK Build-Tools 29.0.2 | build-tools/29.0.2/ …
Run Code Online (Sandbox Code Playgroud)

android android-sdk-tools android-sdk-manager

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

Kotlin Compose,对齐行中的项目

我正在使用新品牌 KotlinCompose作为我的观点,我有一排有 2 个项目,我该如何制作它们center-vertical

    Row(
            modifier = Spacing(20.dp)
    ) {
        Text(text = "Hello $name!")
        Spacing(10.dp)
        Padding(padding = 25.dp) {
            Button(text = "Click", onClick = { /*do something*/ })

        }
    }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

请注意,如果没有填充,它们也不会对齐。

android kotlin android-jetpack-compose

4
推荐指数
3
解决办法
3383
查看次数