имеются виджеты для определения касания, но они не рисуют саму волну. Волну рисует Material виджет.
Т.е., по факту, добавляя нажатие с риплом — каждое нажатие делегируется вверх по дереву к ближайшему виджету, который умеет рисовать волну.
Найти информацию почему оно так сделано мне не удалось. Только вот это: his matches the material design premise wherein the Material is what is actually reacting to touches by spreading ink.
Интересно, а в Compose как это реализовано?
И если так же, то может кто-то знает причину такого решения?
Не уж то только в «ой, ну так по логике материал дизигна нада»?
фактически во вьюхах риплл работает похожим образом. не самом деле находится первый парент у которого есть какой то бекграунд и рипл рисуется поверх этого бекграунда. сделано так потому что вьюхи кропают по своим границам, а риплл часто подразумевает отрисовку и вне границ компонента. ещё из интересного во вьюхах дефолтное поведение это рисовать риппл как бекграунд под контентом, то есть под текстом или иконкой, если риппл не явно передан в setForeground(). в композе изначально сделали так же. но потом посовещались с дизайнерами и решили так как композ компоненты не клипают по границам по умолчанию можно сделать проще если мы просто будем рисовать поверх контента сразу после отрисовки компонента. в итоге нет необходимости повторять подход флаттера с двумя виджетами
Так. То есть по итогу — в компоузе — рипл рисуется не каким-то элементом по дереву, а прямо на месте вызова?
Обсуждают сегодня