Android WebView масштабируется примерно в 3,5 раза ниже, чем экран - PullRequest
0 голосов
/ 10 мая 2019

У меня полноэкранный веб-просмотр, который загружает намного меньшее разрешение, чем экран. На эмуляторе его 412х684, что примерно в 3,5 раза меньше, чем разрешение экрана 1440х2392. Под dev tools -> configuration он показывает плотность на уровне 3,5, так что я думаю, что это как-то связано с этим, но приложение похоже на то, что оно работает с полным разрешением, отличным от веб-просмотра.

Я пытался раздеть все, что мог, чтобы свести к минимуму что-либо вызывающее это, и ничто, похоже, не помогло.

Я сузил его до содержимого веб-просмотра, показав функцию getMeasuredWidth / Height, как это

Toast.makeText(getApplicationContext(), "width "+Integer.toString(mWebView.getMeasuredWidth())+" height "+Integer.toString(mWebView.getMeasuredHeight()), Toast.LENGTH_SHORT).show();

Вот соответствующий код веб-просмотра

        rlp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT );
        relativeLayout.setLayoutParams(rlp);
        //relativeLayout.setFillViewport(true);
//        relativeLayout.setGravity(Gravity.FILL);


        mWebView = new WebView(this);
          mWebView.setScrollContainer(false);
        mWebView.setInitialScale(100);
        mWebView.setPadding(0, 0, 0, 0);
        mWebView.setLayoutParams(rlp);
        relativeLayout.addView(mWebView);

        //enable remote debugging
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            mWebView.setWebContentsDebuggingEnabled(true);
        }

           WebSettings webSettings = mWebView.getSettings();
         webSettings.setLoadWithOverviewMode(true);
         webSettings.setUseWideViewPort(true);
           webSettings.setJavaScriptEnabled(true);
           webSettings.setBuiltInZoomControls(false);
         webSettings.setSupportZoom(false);
           webSettings.setAllowFileAccess(true);
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
               webSettings.setMediaPlaybackRequiresUserGesture(false);
           }

  webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

Для хорошей меры в части html у меня есть это, и это не имеет значения с или без него

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"  />

Я проверяю разрешение в html с помощью этого (сначала я заметил, что фотографии были размытыми)

document.body.innerHTML=window.innerWidth+"x"+window.innerHeight;

У меня нет ничего о веб-просмотре в стилях или манифесте

Как получить разрешение веб-просмотра, соответствующее разрешению экрана?

1 Ответ

0 голосов
/ 11 мая 2019

Подумайте, есть ли у Android функция экономии памяти, возможно ли кодирование изображения, а затем декодирование в Android? в обход любой обработки веб-представлением.

Также некоторые поставщики услуг сжимают изображения при передаче. Убедитесь, что это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...