小编Dav*_*him的帖子

如何在android中实现两个同步视图之间的滑入和滑出动画

我知道我可以使用AnimatedVisibilityComposable 函数并实现可见性动画的滑入动画,但我想要实现的是当一个布局处于进入动画而另一个处于退出动画时,类似于下图。

注意:我知道我应该为不同的屏幕使用导航组合,并且目的地之间的动画仍在开发中,但我想在屏幕的一部分内容上实现这一点,类似于 CrossFade 动画。

在此输入图像描述

android android-jetpack-compose

16
推荐指数
2
解决办法
3万
查看次数

Android studio build 导航组件出错,action 不是抽象的,也没有实现抽象的成员 actionID

不知何故,构建崩溃了,并出现了与导航组件相关的奇怪错误,尽管它以前可以工作,但错误出在生成的类中,就我而言 NativeLanguageSelectionFragmentDirections

这是错误

e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (10, 16): Class 'GoToSelectLearningLangAction' is not abstract and does not implement abstract member public abstract val actionId: Int defined in androidx.navigation.NavDirections
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (13, 12): 'getActionId' overrides nothing
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (15, 12): 'getArguments' overrides nothing
Run Code Online (Sandbox Code Playgroud)

这是导航图的代码

e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (10, 16): Class 'GoToSelectLearningLangAction' is not abstract and does not implement abstract member public abstract val actionId: Int defined in androidx.navigation.NavDirections
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (13, 12): 'getActionId' overrides nothing
e: C:\Users\David\StudioProjects\android\app\build\generated\source\navigation-args\debug\com\linguistic\linguistic\framework\presentation\loginscreens\ui\main\NativeLanguageSelectionFragmentDirections.kt: (15, 12): 'getArguments' overrides nothing
Run Code Online (Sandbox Code Playgroud)

我在用

 "androidx.navigation:navigation-fragment-ktx:2.3.5" …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-navigation

14
推荐指数
4
解决办法
2200
查看次数

如何将 viewModel 的范围限定为与 NavHost 无关的对话框可组合函数

我正在使用 Android 撰写和视图模型,并且我有一个 ViewModel,其范围为单个 Composable 函数,该函数是一个底部工作表视图,它使用BottomSheetScaffold进行膨胀,并且我使用viewModel将 ViewModel 注入 Composable 函数内,但我有一个问题viewModel当我再次打开底部工作表时,函数返回之前创建的相同 viewModel 实例。

换句话说,如何将 ViewModel 的范围限制为与 NavHost 和 backStack 无关的 Dialog Composable 函数


@Composable
 fun ComposableExample(
) {
    val viewModel: ExampleViewModel= viewModel() // createdOnlyOnce and always returns old instance
}
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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

如何在 Jetpack Compose 中设置虚线边框?

我可以使用 轻松创建普通边框,Modifier.border()但如何创建虚线边框,如下图所示。

在此处输入图片说明

android border android-jetpack-compose

7
推荐指数
3
解决办法
723
查看次数

如何在android compose中以黑白显示图像

我正在尝试使用 android compose 将显示的彩色图像转换为黑白图像。

在视图系统中,我可以通过添加这样的过滤器将图像从彩色变为黑白

imageView.colorFilter = ColorMatrixColorFilter(ColorMatrix().apply { setSaturation(0f)})
Run Code Online (Sandbox Code Playgroud)

如本答案所示。

在 Android Compose 中,Image 可组合函数已经采用了颜色过滤器,但我在 compose 包中找不到等效的ColorMatrixColorFilter

这是我想转换为灰度的图像代码

 Image(
            asset = vectorResource(id = R.drawable.xxx),
            modifier = Modifier.clip(RectangleShape).size(36.dp, 26.dp),
            alpha = alpha,
            alignment = Alignment.Center,
            contentScale = ContentScale.Fit
        )
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose

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

在android compose中找不到同时使用底部工作表和底部导航栏的方法

在android compose中,有一个Scaffold可组合的函数来创建一个包含底部导航栏的布局,还有另一个名为BottomSheetScaffold创建一个包含底部导航栏的布局的函数。
我的问题是如何在相同的布局中同时实现底部工作表和底部导航栏?

我尝试使用 BottomSheetScaffold 并在布局中添加底部导航栏,但是当我在同一列中使用 NavHost 时失败了。

案例的简化代码:

    BottomSheetScaffold(
        { BottomSheetComposable },

        topBar = {
            TopAppBar()
        },
        sheetPeekHeight = 0.dp
    ) {
        Column() {
            NavHost(
                navController,
                startDestination = "route"
            ) {
                Composable("route") {}
            }
            Box(
                modifier = Modifier
                    .fillMaxWidth()
                    .height(60.dp)
            ) {
                BottomNavigationBar()
            }

        }
    }

Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

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

如何使元素填充 Jetpack Compose 中行或列内的剩余空间

我试图连续显示两个文本消息,但是当第一个文本的大小很大时,第二个视图被推出屏幕,如下所示:

代码:

Row(modifier = Modifier.fillMaxWidth()) {
    Text(
        text = "safasfasdfsasdssdsaasdsadsdsaasdsasdsasdasddassdsssdasdadsasdasdsd",
        modifier = Modifier
            .padding(top = 12.dp, bottom = 12.dp, end = 12.dp, start = 10.dp)
            .background(Color.Gray)
    )
    Text(
        text = "12:00 am",
        style = messageTimeTextStyle,
        modifier = Modifier
            .padding(horizontal = 16.dp),
        maxLines = 1
    )
}

Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

android android-jetpack-compose

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

Android Compose 无法在 android studio 中预览可组合功能“渲染问题”

我无法预览下面代码中显示的可组合函数

\n
@Preview\n@Composable\nfun StartingConversationInstructions() {\n    Column {\n        Text(stringResource(id = R.string.remember))\n\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但当我尝试预览该功能时出现此错误

\n
java.lang.NoSuchMethodError: \'androidx.compose.runtime.SlotTable\nandroidx.compose.runtime.Composer.getSlotTable()\' \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.InspectableKt.Inspectable(Inspectable.kt:63) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:357) \xc2\xa0\xc2\xa0at\n androidx.ui.tooling.preview.ComposeViewAdapter$WrapPreview$1.invoke(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at\n androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter.WrapPreview(ComposeViewAdapter.kt:356) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$init$1.invoke(ComposeViewAdapter.kt:397) \xc2\xa0\xc2\xa0at \nandroidx.ui.tooling.preview.ComposeViewAdapter$init$1.invoke(ComposeViewAdapter.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AmbientsKt.ProvideCommonAmbients(Ambients.kt:274) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt:176) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt$ProvideAndroidAmbients$3.invoke(AndroidAmbients.kt:-1) \xc2\xa0\xc2\xa0at androidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.AndroidAmbientsKt.ProvideAndroidAmbients(AndroidAmbients.kt:168) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.kt:251) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1$2.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.AmbientKt.Providers(Ambient.kt:188) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.kt:250) \xc2\xa0\xc2\xa0at \nandroidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(Wrapper.kt:-1) \xc2\xa0\xc2\xa0at \n.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:146) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.internal.ComposableLambda.invoke(ComposableLambda.kt:-1) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:2904) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.Composer.composeInitial(Composer.kt:2070) \xc2\xa0\xc2\xa0at \nandroidx.compose.runtime.Recomposer.composeInitial$runtime_release(Recomposer.kt:353) …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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

不能使用camerax拍摄多张图片

我正在尝试使用 camerax 拍摄多张照片,但只拍摄了第一张照片,代码和日志输出将显示我的意思。

这是代码:

        Log.d(TAG, "------------------ taking new picture1");
        mImageCapture.takePicture(new ImageCapture.OnImageCapturedListener() {
            @Override
            public void onCaptureSuccess(ImageProxy imageProxy, int rotationDegrees) {
                Image image = imageProxy.getImage();
                Log.d(TAG, "taking new picture onCapture Success 1 called");
            }

            @Override
            public void onError(ImageCapture.UseCaseError useCaseError, String message, @Nullable Throwable cause) {
                super.onError(useCaseError, message, cause);
                Log.d(TAG, "--------- error in image capture 1" + message);


            }
        });

        Log.d(TAG, "------------------ taking new picture 2");
        mImageCapture.takePicture(new ImageCapture.OnImageCapturedListener() {
            @Override
            public void onCaptureSuccess(ImageProxy imageProxy, int rotationDegrees) {
                Image image = imageProxy.getImage();
                Log.d(TAG, …
Run Code Online (Sandbox Code Playgroud)

android-camerax

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