Проблема с созданием экземпляра Drawable в ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с созданием экземпляра Drawable в Compose

Сообщение Anonymous »

Мне нужно перенести мой старый Java-код, который создает экземпляр Drawable, который представляет собой градиент с начальным цветом в верхней части и конечным цветом в нижней части.
Это сработало отлично работает в Java, но после переноса кода в Kotlin и компоновки функция getDrawable возвращает пустой прозрачный объект рисования:

Код: Выделить всё

override fun getDrawable(): Drawable {
val sf: ShaderFactory = object : ShaderFactory() {
override fun resize(width: Int, height: Int): Shader {
return LinearGradient(
startX(width), startY(height), endX(width), endY(height), intArrayOf(
color1, color2
),
null, Shader.TileMode.MIRROR
)
}
}
val p = PaintDrawable()
p.shape = RectShape()
p.shaderFactory = sf
return p
}

fun startX(actualWidth: Int): Float {
when (type) {
Type.SOLID -> return 0f
Type.DEGREE_DOWN_UP, Type.DEGREE_UP_DOWN -> return actualWidth / 2.0f
Type.DEGREE_LEFT_RIGHT -> return 0.0f
Type.DEGREE_RIGHT_LEFT -> return actualWidth.toFloat()
else -> {}
}
return (-1).toFloat()
}

fun startY(actualHeight: Int): Float {
when (type) {
Type.SOLID -> return 0f
Type.DEGREE_DOWN_UP -> return actualHeight.toFloat()
Type.DEGREE_LEFT_RIGHT, Type.DEGREE_RIGHT_LEFT -> return actualHeight / 2.0f
Type.DEGREE_UP_DOWN -> return 0f
else -> {}
}
return (-1).toFloat()
}

fun endX(actualWidth: Int): Float {
when (type) {
Type.SOLID -> return actualWidth.toFloat()
Type.DEGREE_DOWN_UP, Type.DEGREE_UP_DOWN -> return actualWidth / 2.0f
Type.DEGREE_LEFT_RIGHT -> return actualWidth.toFloat()
Type.DEGREE_RIGHT_LEFT -> return 0f
else -> {}
}
return (-1).toFloat()
}

fun endY(actualHeight: Int): Float {
when (type) {
Type.SOLID -> return actualHeight.toFloat()
Type.DEGREE_DOWN_UP -> return 0f
Type.DEGREE_UP_DOWN -> return actualHeight.toFloat()
Type.DEGREE_LEFT_RIGHT, Type.DEGREE_RIGHT_LEFT -> return actualHeight / 2.0f
else -> {}
}
return (-1).toFloat()
}
Тип рисуемого объекта — DEGREE_UP_DOWN
Что не так в коде?

Подробнее здесь: https://stackoverflow.com/questions/791 ... in-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»