Топтал - это место, где сначала проверяют, умеешь ли ты вообще придумывать решения и переносить свои мысли в код. Единственная часть, где у меня самого были вопросы, - решение задач с шарингом экрана. Но это лишь одна встреча из пяти-шести.
То, что видно на экране, не отражает сложности того, как на самом деле это построено. Каждая линия, кружок, градиент и прочие элементы реализованы наслоением, что позволяет нам отрисовывать маршрут на такой сложной карте. У Яндекс.Метро карта намного легче, на ней меньше элементов, она сама по себе меньше (примерно в 2.6 раз).
Карта Артемия Лебедева огромная. Чтобы она нормально выглядела при максимальном зуме на телефонах с большим экраном и хорошей плотностью пикселей, она должна быть примерно такого размера. Соответственно, на слабых телефонах карта показывается меньшего размера.
TextureView нам понадобился из-за того, что эта карта очень долго отрисовывается на слабых телефонах.
Без использования его нам пришлось бы делать надстройку над View и делать на ней отрисовку в отдельном потоке, чтобы не стопить UI-поток. В итоге получилась бы та же самая TextureView.
В таком случае почему нам удалось отрисовать канвас 5000х5000 на большинстве телефонов, а на телефонах с определенными видеочипами нет?
Вообще статья наполнена какими-то голословными ничем не обоснованными (да и просто ошибочными) утверждениями об Android. Например, утверждение по поводу того, что SurfaceView
не может выдержать нагрузку больше отрисовки кубика 20х20
— ложь. TextureView не может быть эффективнее SurfaceView хотя бы согласно официальной документации.
Документация — это круто, но она не соответствует реальности. При перерисовке SurfaceView моргает черным цветом. Об этом можно почитать здесь
А вот ответ Romain Guy на StackOverflow об ограничении конкретно в Android.
Заявлен минимум в 2048x2048. Ну, и можно получить ограничения с помощью Canvas.getMaximumBitmapWidth() и Canvas.getMaximumBitmapHeight()
Топтал - это место, где сначала проверяют, умеешь ли ты вообще придумывать решения и переносить свои мысли в код. Единственная часть, где у меня самого были вопросы, - решение задач с шарингом экрана. Но это лишь одна встреча из пяти-шести.
Карта Артемия Лебедева огромная. Чтобы она нормально выглядела при максимальном зуме на телефонах с большим экраном и хорошей плотностью пикселей, она должна быть примерно такого размера. Соответственно, на слабых телефонах карта показывается меньшего размера.
TextureView нам понадобился из-за того, что эта карта очень долго отрисовывается на слабых телефонах.
Без использования его нам пришлось бы делать надстройку над View и делать на ней отрисовку в отдельном потоке, чтобы не стопить UI-поток. В итоге получилась бы та же самая TextureView.
В таком случае почему нам удалось отрисовать канвас 5000х5000 на большинстве телефонов, а на телефонах с определенными видеочипами нет?
Документация — это круто, но она не соответствует реальности. При перерисовке SurfaceView моргает черным цветом. Об этом можно почитать здесь
Не работает на Huawei Honor 6x, присылает нули.