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:
- Mejora del análisis de Java / Kotlin JSON
- Operador == no se puede aplicar a 'Long' y 'Int' en Kotlin
- Smartcast es imposible porque propery tiene getter abierto o personalizado
- Horizontal LinearLayout en Anko
- Referencia no resuelta para Dagger 2 en Kotlin
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.
- Gson no puede analizar una cadena de datos de formato json en Kotlin
- Daga de referencia no resuelta 2 + kotlin + androide gradle
- Cómo usar kapt en el alcance de androidTest
- Usar kotlin con ContentResolver causó una excepción de IllegalArgumentException
- Cómo kotlin hace que setOnClickListener acepte funciones como parámetro
- ¿Cuál es la diferencia entre rizadores y brackets normales en RxJava con Kotlin
- ¿Cuáles son las ventajas del lenguaje de programación Kotlin?
- El proyecto no se construirá con Kotlin 1.1.3
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