No se puede usar el valor argb color int en Kotlin?
Cuando quiero animar el textColor
de TextView
en Kotlin:
val animator = ObjectAnimator.ofInt(myTextView, "textColor", 0xFF8363FF, 0xFFC953BE)
este error se produce:
- Cómo utilizar Data Binding y Kotlin en Android Studio 3.0.0
- Android Parcelable en Kotlin
- No se pueden resolver los métodos de registro de Anko
- Kotlin y conexión de datos de Android
- Las propiedades y los valores perezoso de Kotlin se restablecen: un delegado perezoso reajustable
Error:(124, 43) None of the following functions can be called with the arguments supplied: public open fun <T : Any!> ofInt(target: TextView!, xProperty: Property<TextView!, Int!>!, yProperty: Property<TextView!, Int!>!, path: Path!): ObjectAnimator! defined in android.animation.ObjectAnimator public open fun <T : Any!> ofInt(target: TextView!, property: Property<TextView!, Int!>!, vararg values: Int): ObjectAnimator! defined in android.animation.ObjectAnimator public open fun ofInt(target: Any!, propertyName: String!, vararg values: Int): ObjectAnimator! defined in android.animation.ObjectAnimator public open fun ofInt(target: Any!, xPropertyName: String!, yPropertyName: String!, path: Path!): ObjectAnimator! defined in android.animation.ObjectAnimator public open fun ofInt(vararg values: Int): ValueAnimator! defined in android.animation.ObjectAnimator
Parece que el valor 0xFF8363FF
y 0xFFC953BE
no se puede convertir en Int
en Kotlin, sin embargo, es normal en Java:
ObjectAnimator animator = ObjectAnimator.ofInt(myTextView, "textColor", 0xFF8363FF, 0xFFC953BE);
¿Algunas ideas? Gracias por adelantado.
- Cómo setOnEditorActionListener con Kotlin
- Java.lang.NoClassDefFoundError $$ inlined $ forEach $ lambda $ 1 en Kotlin
- Android: Kotlin con Butterknife
- Gradle dependencia entre tareas
- Deshabilitar la generación incremental para kapt
- No se puede encontrar setter para el campo - utilizando Kotlin con base de datos de la sala
- Kotlin Kapt no muestra errores de enlace de datos al ejecutar desde Android Studio
- Kotlin: delegado de propiedad anulable observable
0xFF8363FF
(así como 0xFFC953BE
) es un Long
, no un Int
.
Tienes que Int
a Int
explícitamente:
val animator = ObjectAnimator.ofInt(myTextView, "textColor", 0xFF8363FF.toInt(), 0xFFC953BE.toInt())
El punto es que el valor numérico de 0xFFC953BE
es 4291384254
, por lo que debe almacenarse en una variable Long
. Pero el bit alto aquí es un bit de signo, que denota un número negativo: -3583042
que puede almacenarse en Int
.
Y esa es la diferencia entre dos idiomas. En Kotlin debe añadir el signo -
para denotar negativa Int
que no es cierto en Java :
// Kotlin print(-0x80000000) // >>> -2147483648 (fits into Int) print(0x80000000) // >>> 2147483648 (does NOT fit into Int) // Java System.out.print(-0x80000000); // >>> -2147483648 (fits into Integer) System.out.print(0x80000000); // >>> -2147483648 (fits into Integer)
- Cómo obtener un mapa de bits de VectorDrawable
- Bloquear las posibilidades del paisaje en ciertos fragmentos