Так вы получаете доступные размеры экрана. Это даст вам не необработанный размер пикселя, а доступное пространство вашего окна / действия.
Point outSize = new Point();
getWindowManager().getDefaultDisplay().getSize(outSize);
Также вы можете иметь различные файлы макета XML для альбомной и книжной ориентации. Поместите ваш xml для портрета в res / layout-port. Макет для ландшафта можно поместить в res / layout-land. Вы должны прочитать, как Android обрабатывает ресурсы
Один байт
по сравнению с длинным
не будет иметь большого значения с точки зрения памяти, но когда вы начинаете иметь большие массивы, эти 7 дополнительные байты будут иметь большое значение.
Более того, типы данных помогают лучше передать намерения разработчиков: когда вы сталкиваетесь с длиной байта ;
вы точно знаете, что длина
диапазон - это байт
.
много причин использовать байт
- все, что обрабатывает необработанные двоичные потоки (изображения, файлы, код сериализации и т. Д.), Должно обсуждаться в терминах byte []
буферов.
Я бы не стал использовать byte
просто как счетчик - ЦП может обрабатывать int
более эффективно.
С short
... ну, когда у вас есть массив , это может сэкономить довольно много места, но в целом я бы просто использовал int
.
What I think this question is getting at is that 10+ years ago it was common practice to think about what values your variables needed to store and if, for example, you were storing a percentage (0..100) you might use a byte (-128 to 127 signed or 0 to 255 unsigned) as it was adequately large for the job and thus seen as less "wasteful".
These days however such measures are unnecessary. Memory isn't typically that much of a premium and if it were you'd probably be defeated by modern computers aligning things on 32 bit word boundaries (if not 64) anyway.
Unless you're storing arrays of thousands of these things then these kinds of micro-optimizations are (now) an irrelevant distraction.
Frankly I can't remember the last time I didn't use a byte for something other than raw data and I can't think of the last time I used a short for, well, anything.
При использовании типов данных, которые меньше собственного размера слова ЦП, наблюдается небольшая потеря производительности. Когда центральному процессору необходимо сложить два байта, он загружает их в (32-битные) регистры размером со слово, добавляет их, регулирует их (отсекает три наиболее значимых байта, вычисляет перенос / переполнение) и сохраняет их обратно в байтах.
. Это большая работа. Если вы собираетесь использовать переменную в цикле, не делайте ее меньше, чем родное слово ЦП.
Эти типы данных существуют, чтобы код мог обрабатывать структуры, которые их содержат, из-за ограничения размера или из-за устаревших API или что-то еще.
Это случай «использовать правильный инструмент для работы». Если вы работаете с чем-то, что представляет собой байт, вы используете тип данных byte
. Например, большая часть кода, включающего потоки байтов, требует использования массивов байтов. И наоборот, если вы просто работаете с произвольными целыми числами, используйте int
или long
, если они будут больше, чем может обработать int
.