Тыкаем в svg переходим на экран.

Ответить
Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 09 июл 2014, 12:58

Здравствуйте, Уважаемые форумчани!
Интересует такой вопрос:
Есть svg файл который с легкостью можно отобразить в webview, но интересно как реализовать механизм тыкания пальцем в этот svg (svg к слову размечен на области) и определением в какой именно объект в svg файле ткнули?
Такой механизм можно увидеть в приложении wizee shopper или ЖК Алые паруса, который доступен для айфона.
Любым мыслям и размышлениям буду рад.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Тыкаем в svg переходим на экран.

Сообщение altwin » 09 июл 2014, 13:19

implements OnTouchListener
Изображение

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 09 июл 2014, 23:06

altwin писал(а):implements OnTouchListener

Так я отловлю только само событие и координаты, но я не смогу понять в какой именно объект svg пользователь ткнул.

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 16 авг 2014, 23:52

UP!

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 26 ноя 2014, 23:53

Up!

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 26 ноя 2014, 23:54

может есть какой нибудь способ перенести "участки" svg из браузера в кастомный компонент view и на нём отлавливать события?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Тыкаем в svg переходим на экран.

Сообщение klblk » 27 ноя 2014, 08:11

http://stackoverflow.com/a/17678048
сам не проверял, более того об svg до сегодня не слышал=)

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 27 ноя 2014, 12:06

klblk писал(а):http://stackoverflow.com/a/17678048
сам не проверял, более того об svg до сегодня не слышал=)
Спасибо большое, на похожее натыкался уже но ссылку потом потерял!

Интересны ещё идеи.

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 11 дек 2014, 02:30

UP!

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Тыкаем в svg переходим на экран.

Сообщение altwin » 12 дек 2014, 19:11

Давно я что то не заходил.....

Собственно svg - это простой xml, раз уж вы разделили его на области, то каждая область имеет свои координаты, их вам и нужно получить при клике. Поскольку svg элемент, это лишь содержимое web view(в вашем случае), android sdk ничего о нем не знает и знать не может. Собственно я когда то такое решал через костыли, для определения вам нужен javascript, задача которого обработать событие клика и передать запрос в java код. На сколько я помню, svg рисовал програмно с помощью d3.js и сразу при создании элементов вешал listener, как варриант angular.js который будет слать http при клике, либо же банальный ajax (хотя я бы старался его избежать, сегодня уже много более вкусных решений).

P.S. а вообще лучше использовать SVGParser

Но вообще в моем случае при попытке подружить android с динамическими данными отображаемыми в svg были большие проблемы. Работал с гео координатами из natural earth, включая не только POI и топографию с границами и океанами, но и рельеф, что выродило мне данным в почти 500 мб json -а при каждом перезапросе... учитывая необходимость быстрого доступа и желание хранить все в оперативной памяти - проблем было много... В итоге я просто сделал все на чистом js, что успешно работало в хромиуме, который кстати тоже можно чуть переписать, лишить лишних компонентов и мало кто (из профессионалов) отличит ваше приложение в браузере от нативного.
Изображение

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Тыкаем в svg переходим на экран.

Сообщение altwin » 18 дек 2014, 10:44

klblk писал(а): сам не проверял, более того об svg до сегодня не слышал=)
Между прочим напрасно, svg крутая и очень часто используемая штука... правда да, почему то во всякого рода "обзорах" и "мега туториалах для профессионалов" освещенна слабо... но вот пример опять же просто svg изображения: http://d3games.herokuapp.com/ . Ничего особенного, это просто пример возможностей ( когда попробывал эту "игрушку" сразу захотелось добавить "чит" и теперь можно стрелять нажимая enter ), это просто svg картинка и не много магии javascript. Или вот это, тоже просто svg: http://www.amcharts.com/svg-maps/?map=russia
Изображение

Lucifer777
Сообщения: 122
Зарегистрирован: 18 ноя 2013, 17:53

Re: Тыкаем в svg переходим на экран.

Сообщение Lucifer777 » 02 мар 2015, 16:39

altwin писал(а):Давно я что то не заходил.....

Собственно svg - это простой xml, раз уж вы разделили его на области, то каждая область имеет свои координаты, их вам и нужно получить при клике. Поскольку svg элемент, это лишь содержимое web view(в вашем случае), android sdk ничего о нем не знает и знать не может. Собственно я когда то такое решал через костыли, для определения вам нужен javascript, задача которого обработать событие клика и передать запрос в java код. На сколько я помню, svg рисовал програмно с помощью d3.js и сразу при создании элементов вешал listener, как варриант angular.js который будет слать http при клике, либо же банальный ajax (хотя я бы старался его избежать, сегодня уже много более вкусных решений).

P.S. а вообще лучше использовать SVGParser

Но вообще в моем случае при попытке подружить android с динамическими данными отображаемыми в svg были большие проблемы. Работал с гео координатами из natural earth, включая не только POI и топографию с границами и океанами, но и рельеф, что выродило мне данным в почти 500 мб json -а при каждом перезапросе... учитывая необходимость быстрого доступа и желание хранить все в оперативной памяти - проблем было много... В итоге я просто сделал все на чистом js, что успешно работало в хромиуме, который кстати тоже можно чуть переписать, лишить лишних компонентов и мало кто (из профессионалов) отличит ваше приложение в браузере от нативного.


Сам, что-то давно тоже не заходил. Большое спасибо за такой обширный ответ!

SVGParser этот вариант пробовал только не понятно как он позволит мне обеспечить тыкание в разные области svg и получения события в зависимости от той области куда ткнули. + ещё заметил если в svg много мелких деталей, то качество очень заметно снижается при использовании этой штуки.
500 мб json
:shock:
сегодня уже много более вкусных решений
Можете пожалуйста написать каких именно?

Ответить