четверг, 12 декабря 2013 г.

SurfaceView

SurfaceView унаследован от View и является элементом управления, предоставляющим область для рисования (Surface). Суть в том, чтобы дать отдельному потоку возможность рисовать на Surface, когда он захочет, а не только тогда, когда приложению вздумается обновить экран. Понятие Surface очень похоже на Canvas, но все же немного не то. Canvas — это область рисования на компоненте, а Surface сам является компонентом, т.е. у Surface есть Canvas.
SurfaceView является элементом управления, т.е. можно его непосредственно разместить на форме. Однако, в этом случае толку толку от него будет мало. Так что мы будем писать свой класс, унаследованный от SurfaceView, а также класс для потока, который будет на нем рисовать.

SurfaceHolder

Интерфейс, с помощью которого происходит вся непосредственная работа с областью рисования. Выглядит это примерно так:
SurfaceHolder surfaceHolder;
...
Canvas canvas = surfaceHolder.lockCanvas(); // начали рисовать
 // рисуем
surfaceHolder.unlockCanvasAndPost(canvas); // закончили рисовать

SurfaceHolder.Callback

Интерфейс содержит функции обработки изменения состояния Surface:
  • surfaceCreated(SurfaceHolder holder) — первое создание Surface. Здесь можно, например, запускать поток, который будет рисовать на Surface.
  • surfaceChanged(SurfaceHolder holder, int format, int width, int height) — любое изменение Surface (например, поворот экрана).
  • surfaceDestroyed(SurfaceHolder holder) — уничтожение Surface. Здесь можно останавливать процесс, который рисует на Surface.

Немного о DPI и поддержке XXXHDPI в Android


Android является самой распространённой мобильной операционной системой в мире, такое звание обязывает его работать на экранах абсолютно разных разрешений, варьирующихся от самых маленьких 128×128 точек до FullHD и больше, например, экран Nexus 10 имеет разрешение 2560×1600. Для полного понимания темы нужно разобраться, что же такое DPI и какую роль оно играет в нашей жизни.
devices_displays_main
Итак, DPI (Dots Per Inch) — количество точек на дюйм, обозначает разрешающую способность экранов устройств. Всем и каждому совершенно ясно, что нет никакого смысла рисовать высококачественную большую тяжёлую графику на экран с разрешением 320×240 пикселей, а потому в Android предусмотрены некоторые категории, каждая из которых совпадает с теми или иными аппаратными характеристиками устройства.
  • Low DPI (LDPI) = 120DPI
  • Medium DPI (MDPI) = 160DPI
  • High DPI (HDPI) = 240DPI (Nexus S, SGS2)
  • Extra High DPI (XHDPI) = 320DPI (Galaxy Nexus, Nexus 4, SGS3)
  • Extra Extra High DPI (XXHDPI) = 480DPI (HTC One и SGS4)

среда, 11 декабря 2013 г.

Добро пожаловать!!!


      Всем привет! Данный блог создан для обобщения информации о разработке приложений для Android. Здесь Вы сможете найти ответы на многие вопросы. Блог содержит как общую информацию так и примеры с исходным кодом!