小编Keb*_*bby的帖子

导航组件以编程方式过渡动画

昨天我遇到一个问题,我需要在我的baseFragment中的nav_graph.xml中设置动画,并以编程方式从当前节点获取包含enterAnim和exitAnim资源的动作对象。在这里找不到解决方案,所以我们继续。

首先,我们需要将动画和动画文件夹一起放入anim文件夹,因为它很饿。

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="250"
        android:fromXDelta="-100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />
</set>
Run Code Online (Sandbox Code Playgroud)

您可以在github或stackoverflow上轻松找到的其他动画。

这是我的nav_graph.xml片段,我们将从中进行过渡

<fragment
    android:id="@+id/kebabsFragment"
    android:name="com.kebabkrabby.kebabapp.KebabFragment"
    android:label="so many kebabs"
    tools:layout="@layout/fragment_kebab">

    <action
        android:id="@+id/action_kebabs_to_kebab_detail"
        app:destination="@id/kebabDetailFragment"
        app:enterAnim="@anim/slide_in_right"
        app:exitAnim="@anim/slide_out_left" />
</fragment>
Run Code Online (Sandbox Code Playgroud)

现在在KebabFragment.tk中,您将调用baseFragment方法进行过渡,以详细了解所需的kebab,然后popFromBackStack

//navigateAndClean(actionId, cleanFragmentId)
navigateAndClean(R.id.action_kebabs_to_kebab_detail, R.id.kebabsFragment)
Run Code Online (Sandbox Code Playgroud)

在我们的baseFragment.kt中

internal fun navigateAndClean(actionId: Int, currentFragmentIdToClear: Int) {

    val navBuilder = NavOptions.Builder()

    val navController = Navigation.findNavController(getRootView())
    val currNavigationNode = navController.graph.findNode(currentFragmentIdToClear) // NavDestination of kebabsFragment object in nav_graph.xml
    val action = currNavigationNode?.getAction(actionId) // finally we get this action_kebabs_to_kebab_detail action object

    action?.navOptions?.enterAnim?.let {  //do we …
Run Code Online (Sandbox Code Playgroud)

android-animation android-fragments kotlin android-architecture-components android-architecture-navigation

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

如何将增量构建添加到 Dagger 2

我在这个网站上找不到解决方案。将增量构建添加到 dagger2。你需要做几件事。请记住,关注最新版本应该是专门针对 gradle 和 dagger2 的最佳方式。

匕首版本至少 2.18

kapt "com.google.dagger:dagger-compiler:2.18"
implementation "com.google.dagger:dagger:2.18"
Run Code Online (Sandbox Code Playgroud)

在 gradle.properties 中添加:

kapt.incremental.apt=true
Run Code Online (Sandbox Code Playgroud)

你需要Java 1.8

android {
    compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin 版本至少 1.3.30 和最新的 gradle 工具更好

buildscript {
    dependencies {
       classpath "com.android.tools.build:gradle:3.3.2"
       classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31"
    }
}
Run Code Online (Sandbox Code Playgroud)

对于 gradle 3.3.2 在我们的案例中至少版本 4.10.1:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
Run Code Online (Sandbox Code Playgroud)

现在最重要的部分:

android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments << ["dagger.gradle.incremental": "true"]
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

享受。

android incremental-build android-gradle-plugin dagger-2

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

firebase 动态链接导致 targetSdk 33 上出现 ActivityNotFoundException

有人遇到过这个问题吗?当我在 上构建应用程序时targetSdk 33,应用程序不会打开ActivityNotFoundException在我的pixel 6 android 13.

构建设置导致崩溃:

compileSdk = 33
targetSdk = 33
minSdk = 23
buildTools = "33.0.1"
Run Code Online (Sandbox Code Playgroud)

日志猫崩溃:

Activity not found to handle Intent action [CONTEXT service_id=77 ]
    android.content.ActivityNotFoundException: Unable to find explicit activity class {com.somecompany.app/com.somecompany.app.MainActivity}; have you declared this activity in your AndroidManifest.xml, or does your intent not match its declared <intent-filter>?
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2197)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1839)
        at android.app.Activity.startActivityForResult(Activity.java:5471)
        at hcl.platform_startActivityForResult(:com.google.android.gms@230313044@23.03.13 (190400-503260631):2)
        at hck.startActivityForResult(:com.google.android.gms@230313044@23.03.13 (190400-503260631):2)
        at com.google.android.chimera.android.Activity.startActivityForResult(:com.google.android.gms@230313044@23.03.13 (190400-503260631):2)
        at hgw.startActivityForResult(:com.google.android.gms@230313044@23.03.13 (190400-503260631):2)
        at …
Run Code Online (Sandbox Code Playgroud)

android firebase activitynotfoundexception firebase-dynamic-links

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