小编HAX*_*AXM的帖子

Android 创建 viewModel 对象的不同方法何时使用哪一种?

我最近开始使用 ViewModel 和 AndroidViewModel,我发现有不同的方法来初始化 viewModel 实例,对我来说一切都很好,我只是想知道何时使用哪一种?我应该在哪里初始化 viewModel 对象?以下是获取 viewModel 实例的不同方法,并且对我有用:

    val myViewModel1 = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory()).get(MyViewModel::class.java)
    val myViewModel2 = ViewModelProvider.AndroidViewModelFactory(this.application).create(MyViewModel::class.java)
    val myViewModel3 = ViewModelProvider(this).get(MyViewModel::class.java)
    val myViewModel4: MyViewModel by viewModels()
    val myViewModel5 by viewModels<MyViewModel>()
Run Code Online (Sandbox Code Playgroud)

对我来说最简单和最简单的是第三、第四和第五,但是我不知道这五种方法有什么区别,也请让我知道是否有其他方法或最佳方法来初始化我的 viewModel 对象,我在声明全局变量时对其进行初始化,可以在声明时初始化还是应该在某个生命周期方法内完成?

lifecycle android mvvm viewmodel kotlin

13
推荐指数
1
解决办法
1万
查看次数

如何在Android Studio Bumblebee中添加项目级别依赖类路径

由于我将 Android Studio 更新为Bumblebee项目级别的 build.gradle 文件包含plugins以下块:

plugins {
    id 'com.android.application' version '7.1.1' apply false
    id 'com.android.library' version '7.1.1' apply false
    id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

此处,之前位于顶级 build.gradle 文件中的存储库设置现在位于 settings.gradle 文件中。

通过此更改,我无法向我的应用程序添加新插件,我想将以下插件添加到我已添加到应用程序级别的项目中build.gradle

apply plugin: 'kotlin-android-extensions'
apply plugin: "androidx.navigation.safeargs.kotlin"
Run Code Online (Sandbox Code Playgroud)

为了完成这项工作,我需要在我的项目级别 build.gradle 中添加类路径,但是由于最近 build.gradle 结构的更改,我不确定如何在我的项目级别添加以下行build.gradle

dependencies {
       
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
    }
Run Code Online (Sandbox Code Playgroud)

我试图在https://developer.android.com/studio/releases/gradle-plugin中找到解决方案,但是我看不到任何解决方案,但是我发现这个更改来自带有 gradle 插件的 Android Studio Bumblebee版本7.0.0

请帮我添加依赖项。

android gradle build.gradle gradle-plugin

8
推荐指数
1
解决办法
3484
查看次数

使用 ContentResolver 从游标中获取图库中的最近图像

我正在使用Cursor从图库中获取图像并从图库中获取所有图像,有没有办法只获取少数最近的图像,例如最近捕获的 20 张图像。

我面临的另一个问题是图像从旧到新的顺序,我想以相反的顺序(从新到旧)获取图像。

final String[] columns = { MediaStore.Images.Media.DATA,
                MediaStore.Images.Media._ID };
final String orderBy = MediaStore.Images.Media._ID;
Run Code Online (Sandbox Code Playgroud)

我获取图像的代码:

public void getImg(){
    Cursor imagecursor = getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, orderBy);

    int image_column_index = imagecursor
            .getColumnIndex(MediaStore.Images.Media._ID);
    this.count = imagecursor.getCount();
    this.thumbnails = new Bitmap[this.count];
    this.arrPath = new String[this.count];
    this.thumbnailsselection = new boolean[this.count];
    for (int i = 0; i < this.count; i++) {
        imagecursor.moveToPosition(i);
        int id = imagecursor.getInt(image_column_index);
        int dataColumnIndex = imagecursor
                .getColumnIndex(MediaStore.Images.Media.DATA);
        thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
                getApplicationContext().getContentResolver(), id,
                MediaStore.Images.Thumbnails.MICRO_KIND, null);
        arrPath[i] …
Run Code Online (Sandbox Code Playgroud)

android image-gallery cursor android-contentresolver

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

将修饰符高度宽度设置为线圈 Image 或 AsyncImage 并缩放从 url 加载的图像

我正在使用线圈库在可组合视图中加载图像,并且我想为我的线圈图像可组合项定义固定高度和宽度,但是线圈图像可组合类中缺少修饰符,以下是我正在使用的代码片段。

AsyncImage(
        model = limit.imgUrl,
        contentDescription = null
    )
Run Code Online (Sandbox Code Playgroud)

如何使宽度和高度固定,而不管图像分辨率如何。

android kotlin android-jetpack-compose coil composable

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