Всем привет. Итак, вчера я задал вопрос о кнопках нестандартной формы, и за него проголосовали. С тех пор я провел больше исследований и думаю, что готов спросить что-то более конкретное.
По сути, мне нужно превратить каждую часть этого пирога в кнопку. Круговая диаграмма представляет собой путь SVG, нарисованный с помощью VectorDrawable
, и является ресурсом Drawable в ImageView
. Причина, по которой я не использую растровое изображение, заключается в том, что я хочу, чтобы эта диаграмма была масштабируемой.
Я искал решение повсюду. Я думал замаскировать пирог прозрачным пирогом, нарисованным с помощью PathShape
, и каким-то образом превратить его в кнопку, но это не сработало, потому что Drawables не кликабельны. Кто-то предложил Android Radial Menu, но я подумал, что просто пытаюсь реализовать 6 кнопок. Должен быть более простой способ.
Затем я понял, что решительно нарисовал свой пирог такими яркими цветами, и подумал об использовании OnTouchListener
для вызова 6 разных вещей, которые я хочу сделать, в зависимости от того, к какому цвету прикоснулся пользователь. Я подумал, что это блестящая идея. Но я столкнулся с препятствием, потому что getPixel()
нужно использовать на растровом изображении.
Поэтому мне было интересно, есть ли еще способ получить цвет пикселя в ImageView
, который на самом деле не имеет растрового изображения.
Любые другие предложения о том, как решить мою проблему, также будут оценены.
Спасибо.
... in an ImageView that doesn't actually have a bitmap
Все, что вы отображаете в ImageView, предварительно преобразуется в растровое изображение. Так... что ты спрашиваешь? - person Phantômaxx   schedule 09.04.2016int pixel = bitmap.getPixel(x,y);
, но у меня нет растрового изображения. Или ты хочешь сказать, что я делаю? Если я коснулся красного кусочка пирога, как я могу заставитьOnTouch
вернуть #FF0000? - person skwear   schedule 09.04.2016canvas
, и он всегда содержит растровое изображение (также известное какBitmap
). SVG сначала преобразуется в растровое изображение, а затем рисуется в ImageView. У вас всегда есть растровое изображение в ImageView. Или ничего. Итак, вам нужно получить растровое изображение из вашего ImageView. Затем из этого растрового изображения извлеките цвет по указанной координате. Я бы выбрал готовую библиотеку. Может быть, изменить его, если он не удовлетворяет меня на 100%. - person Phantômaxx   schedule 09.04.2016