Пишу клиент для сайта. Есть WebView в который грузится контент, в том числе видео. Реализовал чтобы работал полноэкранный режим, но видео разворачивается не во всю ширину экрана. По бокам остается пространство. Прошу помочь советом, что сделал не так или куда смотреть.
public class DescriptionActivity extends Activity {
ProgressDialog mProgressDialog;
private WebChromeClient.CustomViewCallback mFullscreenViewCallback;
private FrameLayout mFullScreenContainer;
private View mFullScreenView;
private WebView mWebView;
private static final int SUCCESS = 1;
private static final int NETWORK_ERROR = 2;
private static final int ERROR = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_description);
mWebView = (WebView) findViewById(R.id.web_view);
mFullScreenContainer = (FrameLayout) findViewById(R.id.fullscreen_container);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(mWebChromeClient);
mWebView.setScrollbarFadingEnabled(true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mWebView.setPadding(0, 0, 0, 0);
WebSettings settings = mWebView.getSettings();
settings.setDefaultTextEncodingName("utf-8");
new getHtml().execute();
}
private class getHtml extends AsyncTask
@Override
protected void onPreExecute() {
mProgressDialog = new ProgressDialog(DescriptionActivity.this);
mProgressDialog.setMessage("Загрузка...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Integer doInBackground(String... params) {
try {
Uri urls = getIntent().getData();
String url = urls.toString();
Document doc = Jsoup.connect(url)
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(10000)
.get();
title = doc.select(".c1-post").select("span");
tfa = doc.select(".c1-post-data");
comments = doc.select(".content").select(".comments");
return SUCCESS;
} catch (UnknownHostException e) {
Log.e("Unknown Host Exception", "Network error", e);
return NETWORK_ERROR;
} catch (IOException e) {
Log.e("IO Exception", "Failed to load HTML", e);
return ERROR;
} catch (Exception e) {
Log.e("Exception", "An exception occured", e);
return ERROR;
}
}
@Override
protected void onPostExecute(Integer result) {
if (result == 2) {
Toast.makeText(
getApplicationContext(),
"Network connection error. Check your internet connection and try again.",
Toast.LENGTH_LONG).show();
} else if (result == 3) {
Toast.makeText(getApplicationContext(),
"Unknown error. Failed to load.",
Toast.LENGTH_LONG).show();
} else if (result == 1) {
String comqqq = Jsoup.clean(comments.toString(), Whitelist.basic());
mWebView.loadDataWithBaseURL("http://fratria.ru/",
""
+ "" + title.html() + "
" + tfa.html() + comqqq, "text/html", "en_US", null);
}
mProgressDialog.dismiss();
}
}
@Override
public void onResume()
{
super.onResume();
mWebView.onResume();
}
@Override
public void onPause()
{
super.onPause();
mWebView.onPause();
}
private final WebChromeClient mWebChromeClient = new WebChromeClient() {
@Override
@SuppressWarnings("deprecation")
public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
onShowCustomView(view, callback);
}
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mFullScreenView != null) {
callback.onCustomViewHidden();
return;
}
mFullScreenView = view;
mWebView.setVisibility(View.GONE);
mFullScreenContainer.setVisibility(View.VISIBLE);
mFullScreenContainer.addView(view);
mFullscreenViewCallback = callback;
}
@Override
public void onHideCustomView() {
super.onHideCustomView();
if (mFullScreenView == null) {
return;
}
mWebView.setVisibility(View.VISIBLE);
mFullScreenContainer.setVisibility(View.GONE);
mFullScreenContainer.removeView(mFullScreenView);
mFullscreenViewCallback.onCustomViewHidden();
mFullScreenView = null;
}
};
}
Ответ
Ну для начала я бы посоветовал прятать статус бар
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Тогда у видео будет достаточно высоты что бы при сохранении пропорций заполнить и ширину. Но если у экрана телефона соотношение сторон не соответствует таковому у видео, то тут уж без черных полос не обойдется...
Комментариев нет:
Отправить комментарий