나는 그것을 알아 냈다. 나는 webview의 초기 스케일을 설정해야했고, 화면 해상도가 1080p인데도 720p로 WebView를 볼 수있었습니다.
boolean _bReloaded = false;
boolean _bLoaded = false;
int _nWebScale = 100;
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int nScreenHeight = displaymetrics.heightPixels;
if(nScreenHeight >= 1000){
_nWebScale = (int) Math.round((nScreenHeight/720.0) * 100.0);
_bReloaded = false;
mWebView.setVisibility(View.INVISIBLE);
}
mWebView.setInitialScale(_nWebScale);
하지만이 완료되지 않은 :
이 내가 사용하는 코드입니다.
이 시점에서 webView는 적절한 해상도로 표시됩니다. 그러나 WebView가로드 될 때 Webview 창의 크기가 눈에 띄게 조정됩니다. 이것이 위의 코드에서 webview를 숨기는 이유입니다. 또 다른 문제는 내 특별한 경우에 내 HTML이 윈도우 크기 조정 이벤트를 듣지 않아서 웹 뷰가 크기가 눈에 띄게 변화된 후에 UI가 재조정되지 않았다는 것입니다. 이 문제를 해결하기 위해 HTML을 변경하고 자바 스크립트 창 크기 조정 이벤트에 반응 시키거나 궁극적으로 내가 한 일을 할 수있었습니다. 잘못된 크기의 UI가로드 된 후 webview를 다시로드합니다.
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if (progress == 100) {
if(_nWebScale != 100 && (mWebView.getVisibility() != View.VISIBLE) && !_bReloaded){
_bReloaded = true;
mWebView.reload();
} else {
_bLoaded = true;
displayLoadingSpinner(false);
mWebView.setVisibility(View.VISIBLE);
}
} else if (mProgressBar.getVisibility() != View.VISIBLE) {
displayLoadingSpinner(true);
_bLoaded = false;
}
}
});
직접 원래의 질문에 관련되지 않은 정보의 또 다른 조각을하지만, 유용 할 수있는 것은 다음과 같다 :이 솔루션을 나는 창 크기 조정 이벤트에 반응하지 않았다. 내 코드 내에서 webview에서 보낸 매개 변수를 기반으로 VideoView 크기를 조정하고 위치를 조정해야했습니다. 그러나 webview는 실제 디스플레이 해상도와 다른 해상도가 될 수 있으므로 화면 해상도 측면에서 매개 변수를 조정해야했습니다.
예를 들어
//this parameter is equal to the width of the webview screen: 720
nHeightFromWebView;
//This is the x position of where the VideoView should be placed.
nXFromWebView;
float nScale = (float)_nWebScale/100;
int nAdjustedHeight = (int) Math.round(((float)nHeightFromWebView * nScale));
//The adjusted height computes to 1080 - the actual resolution of the screen
int nNewX = (int)Math.round((float)nXFromWebView * nScale);
. "말했다 모든, 960x540에 720p 또는 1080p 중 하나에 대한 안드로이드 장치의 픽셀이" 그게 무슨 뜻 이죠? 나는 Fishtank 테스트 유닛과 함께 일하고 있습니다. – jaxim
아마 ARM 기반 장치를 원할 것입니다. Android Density Independent Pixels에 대한 정보는 http://developer.android.com/guide/practices/screens_support.html –
에서 찾을 수 있습니다. 도움에 감사드립니다! 좋아, 다른 TV 플랫폼에서 허용하는 것처럼 (즉, 삼성) 특정 해상도로 앱을 제한하는 공식적인 방법이 없지만 동일한 결과를 얻기위한 비공식적 인 방법이 있습니까? 예를 들어 작은 720p 웹보기를 1080p 디스플레이에 전체 화면에 맞게 확대 할 수있는 방법이 있습니까? – jaxim