Android Compose как календарь недели GoogleAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Compose как календарь недели Google

Сообщение Anonymous »

Я хотел воспроизвести представление календаря недели Google в режиме составления, но застрял при прокрутке. Я использую обнаружениеTransformGestures() для масштабирования и перевода содержимого, но как только я отпускаю пальцы, перевод прекращается. Как бы вы добавили поведение прокрутки, которое продолжает прокрутку после того, как вы отпустите ее (точно так же, как обычный Recyclerview или .scrolling() в Compose).
Я нашел https: //github.com/alamkanak/Android-Week-View, но кажется слишком сложным и используется в xml. Мне нужно что-то более чистое и простое в использовании.
Вот мой текущий код. Содержимое еще не ограничено верхом и низом, и вы можете масштабировать его настолько, насколько хотите.
@Composable
fun WeekCalendar() {

var scaleY by remember {
mutableStateOf(1f)
}
var offset by remember {
mutableStateOf(0f)
}

var centroi by remember {
mutableStateOf(0f)
}

Canvas(modifier = Modifier

.pointerInput(Unit) {
this.detectTransformGestures() { centroid, pan, zoom, rotation ->

scaleY *= zoom
offset += pan.y * zoom
// center zooming around point location
offset += (zoom - 1) * (offset - centroid.y)
centroi = centroid.y
}
}
.fillMaxWidth()
.height(1200.dp)
) {
val bottom = size.height * scaleY + offset
val top = offset

drawLine(
color = Color.Red,
start = Offset(0f, top),
end = Offset(size.width, top),
)

drawLine(
color = Color.Red,
start = Offset(size.width, top),
end = Offset(size.width, bottom),
)

drawLine(
color = Color.Red,
start = Offset(size.width, bottom),
end = Offset(0f, bottom),
)

drawLine(
color = Color.Red,
start = Offset(0f, bottom),
end = Offset(0f, top),
)

drawLine(
color = Color.Red,
start = Offset(0f, top),
end = Offset(size.width, bottom),
)

drawPoints(listOf(Offset(size.width / 2, centroi)), PointMode.Points, color = Color.Blue, strokeWidth = 5f)
}
}


Подробнее здесь: https://stackoverflow.com/questions/705 ... k-calendar
Ответить

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

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

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

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

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