我注意到 Kotlin 中的类可以有多个 init 块。如果是,它们将按顺序执行。
拥有多个的好用例是什么?
在我的片段中,我观察到一个实时数据:
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 协程。
我有一个用例,用户可以使用远程 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)
然而,这取消了整个过程
我怎样才能达到用最近的搜索字符串替换当前正在执行的搜索的预期结果?
我一直在尝试放大视图,然后通过像动画一样缩小返回到原始大小。
我能够做的是将放大和缩小放在一组中,并在单击按钮时在图像视图上对其进行动画处理,但它第一次突然减小图像大小,然后在以后的单击时进行良好的动画处理。我将不胜感激任何有助于完成流畅动画的帮助
我的代码
<?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) 我正在尝试从命令行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) 我正在使用新品牌 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)
请注意,如果没有填充,它们也不会对齐。