android的webView加载网页
android或ios平台中经常会嵌入一下web前端的页面进行展示交互。
android和ios中都可以通过webView来加载web前端页面
实现效果:
实现思路:
1.先制作手机适配的web前端网页
2.通过App的 webView加载web前端网页的网址
3、改变按键逻辑
实现代码:
fragmentthree.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_back"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<!--<TextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:text="three"-->
<!--/>-->
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
/>
</LinearLayout>
fragmentthree.java:
package com.example.myframe.fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import com.example.myframe.R;
/**
* Created by Administrator on 2017/3/10.
*/
public class fragmentthree extends Fragment{
private WebView webView;
//懒加载fragment
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
//改变webView按键逻辑
private Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1: {
webViewGoBack();
}
break;
}
}
};
private void webViewGoBack() {
webView.goBack();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmentthree, null);
view.setClickable(true);// 防止点击穿透,底层的fragment响应上层点击触摸事件
Toast.makeText(getActivity().getApplicationContext(),"fragmentthree",Toast.LENGTH_SHORT).show();
//通过webView启动网页
startWebView(view);
//通过intent启动网页
// startWebByIntent();
return view;
}
//通过webView启动网页
private void startWebView(View view){
//webView加载网页
webView = (WebView)view.findViewById(R.id.webView);
//WebView加载web资源
webView.loadUrl("http://test.81717111.com/chenchi");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
//改写物理按键——返回的逻辑
//启用支持javascript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
handler.sendEmptyMessage(1);
return true;
}
return false;
}
});
}
//通过intent启动网页
private void startWebByIntent(){
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse("http://www.163.com");
intent.setData(content_url);
intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getActivity().getApplicationContext(),"onDestroy--->fragmentthree",Toast.LENGTH_SHORT).show();
}
}