Тыкаем в svg переходим на экран.
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Тыкаем в svg переходим на экран.
Здравствуйте, Уважаемые форумчани!
Интересует такой вопрос:
Есть svg файл который с легкостью можно отобразить в webview, но интересно как реализовать механизм тыкания пальцем в этот svg (svg к слову размечен на области) и определением в какой именно объект в svg файле ткнули?
Такой механизм можно увидеть в приложении wizee shopper или ЖК Алые паруса, который доступен для айфона.
Любым мыслям и размышлениям буду рад.
Интересует такой вопрос:
Есть svg файл который с легкостью можно отобразить в webview, но интересно как реализовать механизм тыкания пальцем в этот svg (svg к слову размечен на области) и определением в какой именно объект в svg файле ткнули?
Такой механизм можно увидеть в приложении wizee shopper или ЖК Алые паруса, который доступен для айфона.
Любым мыслям и размышлениям буду рад.
Re: Тыкаем в svg переходим на экран.
implements OnTouchListener
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Тыкаем в svg переходим на экран.
altwin писал(а):implements OnTouchListener
Так я отловлю только само событие и координаты, но я не смогу понять в какой именно объект svg пользователь ткнул.
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Тыкаем в svg переходим на экран.
может есть какой нибудь способ перенести "участки" svg из браузера в кастомный компонент view и на нём отлавливать события?
Re: Тыкаем в svg переходим на экран.
http://stackoverflow.com/a/17678048
сам не проверял, более того об svg до сегодня не слышал=)
сам не проверял, более того об svg до сегодня не слышал=)
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Тыкаем в svg переходим на экран.
Спасибо большое, на похожее натыкался уже но ссылку потом потерял!klblk писал(а):http://stackoverflow.com/a/17678048
сам не проверял, более того об svg до сегодня не слышал=)
Интересны ещё идеи.
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Тыкаем в svg переходим на экран.
Давно я что то не заходил.....
Собственно 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, что успешно работало в хромиуме, который кстати тоже можно чуть переписать, лишить лишних компонентов и мало кто (из профессионалов) отличит ваше приложение в браузере от нативного.
Собственно 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, что успешно работало в хромиуме, который кстати тоже можно чуть переписать, лишить лишних компонентов и мало кто (из профессионалов) отличит ваше приложение в браузере от нативного.
Re: Тыкаем в svg переходим на экран.
Между прочим напрасно, svg крутая и очень часто используемая штука... правда да, почему то во всякого рода "обзорах" и "мега туториалах для профессионалов" освещенна слабо... но вот пример опять же просто svg изображения: http://d3games.herokuapp.com/ . Ничего особенного, это просто пример возможностей ( когда попробывал эту "игрушку" сразу захотелось добавить "чит" и теперь можно стрелять нажимая enter ), это просто svg картинка и не много магии javascript. Или вот это, тоже просто svg: http://www.amcharts.com/svg-maps/?map=russiaklblk писал(а): сам не проверял, более того об svg до сегодня не слышал=)
-
- Сообщения: 122
- Зарегистрирован: 18 ноя 2013, 17:53
Re: Тыкаем в svg переходим на экран.
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
Можете пожалуйста написать каких именно?сегодня уже много более вкусных решений