package com.application.zhangshi_app_android.ui;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.drawable.BitmapDrawable;
|
import android.text.TextUtils;
|
import android.util.Base64;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
|
import androidx.annotation.NonNull;
|
|
import com.android.app_base.base.dialog.BaseDialog;
|
import com.android.app_base.base.dialog.WaitDialog;
|
import com.android.app_base.base.view.BaseActivity;
|
import com.application.zhangshi_app_android.R;
|
import com.application.zhangshi_app_android.databinding.ActivityBrowserBinding;
|
import com.hjq.bar.TitleBar;
|
import com.scwang.smart.refresh.layout.api.RefreshLayout;
|
import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
|
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLEncoder;
|
|
/**
|
* @author Ljj
|
* @date 2023.10.15. 22:36
|
* @desc 浏览器界面
|
*/
|
public class BrowserActivity extends DLBaseActivity<ActivityBrowserBinding,SimpleViewModel> {
|
|
private static final String INTENT_URL = "url";
|
|
private String url;
|
private BaseDialog mWaitDialog;
|
|
@Override
|
protected boolean isDrawerLayoutEnabled() {
|
return false;
|
}
|
|
public static void start(Context context, String url) {
|
if (TextUtils.isEmpty(url)) {
|
return;
|
}
|
Intent intent = new Intent(context, BrowserActivity.class);
|
intent.putExtra(INTENT_URL, url);
|
if (!(context instanceof Activity)) {
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
}
|
context.startActivity(intent);
|
}
|
|
@Override
|
public int getLayoutId() {
|
return R.layout.activity_browser;
|
}
|
|
@Override
|
public int getVariableId() {
|
return 0;
|
}
|
|
@Override
|
public void initParam() {
|
url = getIntent().getStringExtra(INTENT_URL);
|
}
|
|
@Override
|
public void initView() {
|
binding.slBrowserRefresh.setEnableRefresh(true);
|
binding.slBrowserRefresh.setEnableLoadMore(false);
|
binding.slBrowserRefresh.setOnRefreshListener(new OnRefreshListener() {
|
@Override
|
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
binding.wvBrowserView.reload();
|
}
|
});
|
|
WebSettings webSettings = binding.wvBrowserView.getSettings();
|
webSettings.setJavaScriptEnabled(true); // 启用JavaScript
|
webSettings.setBuiltInZoomControls(true); // 启用内置的缩放控件
|
webSettings.setDisplayZoomControls(false); // 隐藏缩放按钮
|
webSettings.setSupportZoom(true); // 启用缩放
|
webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
|
webSettings.setUseWideViewPort(true); // 启用支持视窗
|
|
binding.wvBrowserView.setWebViewClient(new WebViewClient(){
|
/**
|
* 开始加载网页
|
*/
|
@Override
|
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
binding.pbBrowserProgress.setVisibility(View.VISIBLE);
|
}
|
|
/**
|
* 完成加载网页
|
*/
|
@Override
|
public void onPageFinished(WebView view, String url) {
|
binding.pbBrowserProgress.setVisibility(View.GONE);
|
binding.slBrowserRefresh.finishRefresh();
|
dialogDismiss();
|
}
|
});
|
binding.wvBrowserView.setWebChromeClient(new WebChromeClient(){
|
/**
|
* 收到网页标题
|
*/
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
if (title == null) {
|
return;
|
}
|
binding.tbBrowserTitle.setTitle(title);
|
}
|
|
@Override
|
public void onReceivedIcon(WebView view, Bitmap icon) {
|
if (icon == null) {
|
return;
|
}
|
// setRightIcon(new BitmapDrawable(getResources(), icon));
|
}
|
|
/**
|
* 收到加载进度变化
|
*/
|
@Override
|
public void onProgressChanged(WebView view, int newProgress) {
|
binding.pbBrowserProgress.setProgress(newProgress);
|
}
|
});
|
}
|
|
@Override
|
public void initData() {
|
dialogLoading();
|
binding.wvBrowserView.loadUrl(url);
|
}
|
|
@Override
|
public void initLiveDataObserve() {
|
|
}
|
|
@Override
|
public void onLeftClick(TitleBar titleBar) {
|
finish();
|
}
|
|
@Override
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
if (keyCode == KeyEvent.KEYCODE_BACK && binding.wvBrowserView.canGoBack()) {
|
// 后退网页并且拦截该事件
|
binding.wvBrowserView.goBack();
|
return true;
|
}
|
return super.onKeyDown(keyCode, event);
|
}
|
|
@Override
|
protected void dialogLoading() {
|
if (mWaitDialog == null) {
|
mWaitDialog = new WaitDialog.Builder(this)
|
.create();
|
mWaitDialog.setCancelable(true);
|
}
|
if (!mWaitDialog.isShowing()) {
|
mWaitDialog.show();
|
}
|
}
|
|
@Override
|
protected void dialogDismiss() {
|
if (mWaitDialog != null && mWaitDialog.isShowing()) {
|
mWaitDialog.dismiss();
|
mWaitDialog = null;
|
}
|
}
|
}
|