package com.demo.com.demoapplication;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
* Created by wy on 2018/7/20.
*/
public class WebActivity extends AppCompatActivity {
private static final String mWebContent = ""
+ "<!-- EM_StockImg_Start --><p style=\"text-align:center;\"><img src=\"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1532084238807&di=f0917afa525c97f1158c9e987d763666&imgtype=0&src=http%3A%2F%2Fs2.sinaimg.cn%2Fmw690%2Fc27074e1t7c72ec75b661%26690\"" +
" border=\"0\" alt=\"K图 000001_1\" data-code=\"K 000001|1|1\" style=\"border:#d1d1d1 1px solid;\" width=\"5"
+ "8\" height=\"276\" /></p><!-- EM_StockImg_End --><p> <s"
+ "an id=\"Info.3257\">沪指</span>和<span id=\"Info.3259\">创业板指</span>双双宽幅震荡,盘面上,保险、钢铁和水泥板块涨幅居前,民航机场、环保、黄金、生物"
+ "苗等板块表现不佳,跌幅居前。截止发稿,沪指下跌0.29%;创业板指下跌0.63%。</p><p> 今日消息面:<br /></p><p> 1、<p> <span class=\"info-lin"
+ " info-code=\"NW20180719909201215\">银保监会:大中型银行要加大信贷投放力度 降低小微企业融资成本</span></p><br /></p><p> 2、<p> <s"
+ "an class=\"info-link\" info-code=\"NW20180719909330352\">全国首家!上海不动产信息查询向银行开放 炒房客无眠</span></p><br /></p>"
+ " 3、<p> <span class=\"info-link\" info-code=\"NW20180719909186685\">央行窗口指导银行增配较低评级信用债 市场争议AA+债券流动性能否"
+ "复</span></p><br /></p><p> 4、<p> <span class=\"info-link\" info-code=\"NW20180719909178311\">部委密集研讨扩大中"
+ "收入群体 一揽子新政正酝酿</span></p><br /></p><p> 5、<p> <span class=\"info-link\" info-code=\"NW2018071990942809\">"
+ "PPP条例今年有望出台 防控地方政府债务风险文件正在研究</span></p><br /></p><p> 今天券商<span id=\"Info.318\">晨会</span>上,<span id"
+ "\"Info.3224\">分析师</span>表示,A股仍是存量格局,风险偏好难以明显回升,短期维持震荡行情。<br /></p><p> <strong>华泰证券:</strong></p><p>"
+ "大部分投资者认为短期维持震荡行情,国内外风险因素仍较多,政策意图尚不明朗,缺乏上行动力,控制仓位,部分投资者会趁中报季调仓,逢高卖出逻辑有瑕疵的个股。也有少数投资者认为目前是底部区域,适合做长线投资"
+ "在下跌中逐渐加仓。个股选择上,部分投资者注重自下而上选股,关注能走出独立行情的细分行业龙头。</p><p> <strong>东北证券:</strong></p><p> 受国内去杠杆、信用环境偏紧"
+ "生产和需求背离难持续、企业利润将缓降等影响,A股仍是存量格局,风险偏好难以明显回升。但目前估值偏低,供需矛盾不大,货币政策微调、财政政策有望更积极,反弹格局可期,但风险同存。如上述基本面因素,大方向"
+ "撑无风险资产表现,具有配置价值,但信用债预计难以明显有起色。无风险债券表现需注意三季度可能出现的供需矛盾以及美联储9月再加息(国内可能跟随“加息”)。</p>";
private WebView webView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
initView();
}
private void initView(){
webView = findViewById(R.id.webview);
webView.setVisibility(View.VISIBLE);
DisplayMetrics dm = getResources().getDisplayMetrics();
int scale = dm.densityDpi;
if (scale == 240) { //设置自动适配
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
} else if (scale == 160) {
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
} else {
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
}
webView.setVerticalScrollBarEnabled(false);
webView.getSettings().setJavaScriptEnabled(false);
webView.getSettings().setBlockNetworkImage(false);
webView.getSettings().setDefaultTextEncodingName("UTF-8");
webView.setWebChromeClient(new WebChromeClient() {
});
webView.getSettings().setSupportZoom(true);//支持缩放
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);//不显示缩放按钮
webView.setHorizontalScrollBarEnabled(false);
webView.setVerticalScrollBarEnabled(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
webView.getSettings().setDomStorageEnabled(false);
if (Build.VERSION.SDK_INT >= 21) {//同时允许HTTP和HTTPS
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
findViewById(R.id.linear).setVisibility(View.VISIBLE);
findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadContent();
}
});
findViewById(R.id.btn_2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadContentFill();
}
});
}
/**
* 加载原有数据
*/
private void loadContent(){
webView.loadDataWithBaseURL(null, mWebContent, "text/html", "utf-8", null);
}
/**
* 通过适配,使图片宽度占满屏幕
*/
private void loadContentFill(){
String head = "<head><style>* {font-size:15px}{color:#212121;}img{max-width: 100%; width:auto; height: auto;}</style></head>";
String resultStr = "<html>" + head + "<body>" + mWebContent + "</body></html>";
webView.loadDataWithBaseURL(null, resultStr, "text/html", "utf-8", null);
}
@Override
protected void onDestroy() {
if (webView != null) {
webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
webView.clearHistory();
((ViewGroup) webView.getParent()).removeView(webView);
webView.destroy();
webView = null;
}
super.onDestroy();
}
}
最后,有一个坑,千万不要短时间重复加载,会有小概率出现加载不全的情况。
demo地址:https://download.csdn.net/download/qq_24179679/10554342