Форум программистов, компьютерный форум CyberForum.ru

CalculateInSampleSize - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Front facing camera http://www.cyberforum.ru/android-dev/thread1599920.html
Добрый вечер, уважаемые форумчане. Вопрос заключается в следующем: Использую библиотеку для считывания QR кодов https://github.com/dlazaro66/QRCodeReaderView Выбор пал именно на нее, потому что мне нужно проводить считывание через view. Так вот, все работает замечательно, но вот нужно сделать так, чтоб открывалась не дефолтная камера, а фронтальная. Искал я искал способ переключить...
Программирование Android AlarmManager Добрый вечер, как задать время вручную ? alarmManager.set(AlarmManager.RTC, System.currentTimeMillis(), pendingIntent); http://www.cyberforum.ru/android-dev/thread1599816.html
Библиотека галереи в стиле Metro Программирование Android
Такой вопрос, знает ли кто готовые библиотечные решения галерей в стилей mtero? Что я хочу получить в итоге. Мне необходимо создать предельно отзывчивую галерею, в которую разаботчик загружает массив uri с указанием растяжений каждой фотографии, а назад получает готовую разметку связанную обратками библиотеки. При этом в любой момент в нее может быть отправлена команда на перестроение структуры,...
Программирование Android Подключение телефона Lenovo s90 через usb к пк
Здравствуйте, сразу к проблеме: при подключение телефона Lenovo s90-А (через родной шнур) к пк, телефон не определяет что подключён к пк, телефон просто заряжается. Появилось недавно, раньше всё работало нормально. У друга точно такой же телефон и такая же проблема. Пробовал ставить драйвера на компьютер и даже ставить отладку по usb реакций 0. Думал что сломался шнур, но на другом телефоне всё...
Программирование Android Genymotion: unable to set OpenGL hardware acceleration for the virtual device http://www.cyberforum.ru/android-dev/thread1599654.html
ошибка при запуске виртуальной машины :( как исправить? Добавлено через 21 час 14 минут хелп !!!
Программирование Android Перестала запускаться Android Studio Буквально вчера все работало, сегодня висит серое окошко, загрузка не идет, висит так полчаса потом пропадает. Абсолютно ничего не делал с компом, только перезагрузил, никаких сообщений с ошибками не вылетает, в диспетчере висит два процесса. Есть мысли? Может сталкивался кто? Пробовал переустановить и удалить файлы настроек - не помогло. подробнее

Показать сообщение отдельно
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850

CalculateInSampleSize - Программирование Android

02.12.2015, 20:09. Просмотров 225. Ответов 0
Метки (Все метки)

Мне кажется, или в методе calculateInSampleSize для расчета требуемого размера bitmap, который дает хелп гугл и который представлен в уроке 160, использование оператора || немного неправильно?
Вот код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static Bitmap decodeSampledBitmapFromResource(String path,
      int reqWidth, int reqHeight) {
 
    // Читаем с inJustDecodeBounds=true для определения размеров
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(path, options);
 
    // Вычисляем inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth,
        reqHeight);
 
    // Читаем с использованием inSampleSize коэффициента
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeFile(path, options);
  }
 
  public static int calculateInSampleSize(BitmapFactory.Options options,
      int reqWidth, int reqHeight) {
    // Реальные размеры изображения 
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;
 
    if (height > reqHeight || width > reqWidth) {
 
      final int halfHeight = height / 2;
      final int halfWidth = width / 2;
 
      // Вычисляем наибольший inSampleSize, который будет кратным двум
      // и оставит полученные размеры больше, чем требуемые 
      while ((halfHeight / inSampleSize) > reqHeight
          && (halfWidth / inSampleSize) > reqWidth) {
        inSampleSize *= 2;
      }
    }
 
    return inSampleSize;
  }
Представим ситуацию, когда height > reqHeight, а width < reqWidth. Условие с || выполнится, так как если первое True, то второе даже проверятся не будет.
Условие цикла while (halfWidth / inSampleSize) > reqWidth не выполнится по-любому, так как ширина меньше требуемой изначально и мы получается за зря потратили время на вычисления halfHeight и halfWidth и на цикл While. А вот если бы мы написали условие для if вот так:
Java
1
if (height > reqHeight | width > reqWidth)
то проверились бы оба условия, и уже на данном этапе мы бы дальше не пошли и сразу вернули бы inSampleSize=1.

А вы как считаете?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru