Оболочка HTC Sense для Android сматртфонов меняет базовый интрфейс устройства наиболее радикальным образом. При этом изменения происходит не только на внешнем "пользовательском" уровне, но и в глубине ОС Android, что приходится учитывать при программировании. Самая неприятная "особенность" с которой я успел столкнуться относиться к работе базового метода
Bitmap.createBitmap
. К примеру, вот стандартный код:
// ...
int finalX = 10;
int finalY = 20;
int finalWidth = 100;
int finalHeight = 120;
Bitmap finalBitmap = Bitmap.createBitmap(originalImage, finalX, finalY,
finalWidth, finalHeight);
Мы из изображения, хранящегося в originalImage
и, к примеру, имеющего размеры 200x300 пикселей, копируем часть размером 100x120 в новый битмап finalBitmap
со смещением 10 пикселей по X и 20 пикселей по Y. Это полностью нормальный и рабочий код. Но, стоит изменить значение переменной finalY
c "20" на "0", как на устройствах с HTC Sense этот код начнет выдавать совершенно неожиданные результаты: при копировании значение finalHeight
будет игнорироваться и метод будет использовать полную высоту изображения, отмасштабировав ее в нужную нам высоту (300 будет сжато до 120 в приведенном примере). При этом для координаты X все значения работают корректно - ошибка касается только Y координаты.
Ошибка не очень серьезная, но знать о ней и учитывать необходимо. Разрабатываемое приложение позволяло использовать быстрое решение: замена значения finalY
с"0" на "1", а вот для тех случаев, когда верхний пиксель критично важен придется уже писать собственную функцию копирования.
Комментариев нет:
Отправить комментарий