Nano Hash - криптовалюты, майнинг, программирование

Получить реальную ширину мобильного устройства Android после изменения ориентации

Очень утомительно работать с Android HTML5 и Javascript.

На этот раз я пытаюсь выяснить, какой текущий размер экрана (ширина) при загрузке DOM И когда пользователь меняет ориентацию:

  • screen.width работает совершенно по-разному в разных версиях AndroidOS. Невозможно использовать.
  • jQuery $(window).width() возвращает реальную ширину, но срабатывает до изменения ориентации. Я пробовал с тайм-аутом 200 мс, тоже не работает.

Затем я попробовал этот фрагмент:

var deviceWidth = window.orientation == 0 ? window.screen.width : window.screen.height;

if (navigator.userAgent.indexOf('Android') >= 0 && window.devicePixelRatio) {
  deviceWidth = deviceWidth / window.devicePixelRatio;
}

В некоторых версиях Android он меняется по ориентации, в некоторых нет.

Какие-либо предложения?

Спасибо!

Изменить/Решение:

Вот как это работало для меня на Android и iOS:

$( window ).on( "orientationchange", function( event ) {
  //console.log( "This device is in " + event.orientation + " mode!" );

  var oc_timer;
  clearTimeout(oc_timer);
  oc_timer = setTimeout(function () {
    //do your magic stuff with jQuery's $(window).width()
  }, 500);
);
$( window ).orientationchange(); //fire it manually on page load

Ответы:


1

Попробуйте это внутри функций привязки с тайм-аутом, как показано ниже.

  $(window).bind( 'orientationchange', function(e){
    setTimeout(function() {
       var device_width = $(window).width();
     },500);
   });

Подробнее читайте здесь: Размер устройства и области просмотра в JavaScript

За

  • Как получить размер области просмотра
  • Как получить размер устройства.
  • Как получить размер документа.

Читайте также: http://www.w3schools.com/js/js_window_screen.asp

06.06.2014
  • Спасибо! Посмотрите на мое решение в первом посте. 06.06.2014

  • 2

    Этот метод даст вам размеры вашего устройства:

    Point size = new Point();
    Display display = getWindowManager().getDefaultDisplay();
    int height = 0;
    int width = 0;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
        display.getSize(size);
        width = size.x;
        height = size.y;
    } else {
        width = display.getWidth();
        height = display.getHeight();
    }
    
    06.06.2014
  • Спасибо, но мне нужно Javascript-решение. 06.06.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..