布局写好了,接下来给他们添加点击事件。
因为这些跳转都是到web界面,所以看一下WebView的实现。
首先定义xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
定义一个activity:
public class WebViewActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//去掉页面title
setContentView(R.layout.webview);
String urlString = getIntent().getStringExtra(ConstantsUtil.LOCAL_URL);
WebView webView = (WebView)findViewById(R.id.web);
webView.loadUrl(urlString);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
}
添加权限和申明activity
<uses-permission android:name="android.permission.INTERNET" />
在点击事件里跳转:
Intent startIntent = new Intent(context, WebViewActivity.class);
startIntent.putExtra(ConstantsUtil.LOCAL_URL, url);
context.startActivity(startIntent);
但是页面并没有显示内容。
可以尝试加以下方法:
WebSettings settings = webView.getSettings();
settings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
settings.setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
settings.setSupportZoom(true);//是否可以缩放,默认true
settings.setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
settings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
settings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
settings.setAppCacheEnabled(true);//是否使用缓存
settings.setDomStorageEnabled(true);//DOM Storage
加了后,可以正常显示了。
具体使用代码如下:
https://github.com/doudousang/webview.git
参考网址:
Android WebView 的使用(超详细用法)
解决webview打不开网页的问题
另外,运行在9.0手机上,发现网络获取不到数据,需要在res里面建一个xml文件夹,再建一个xml文件:network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
再在manifest的application里面,添加一行
android:networkSecurityConfig="@xml/network_security_config"
就可以了。
flutter的应用,同样可以在android代码里面加上这个,就能运行了。
参考网址:
Android 9.0 http无法访问网络问题
网友评论