MainActivity.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package me.yoqi.android.nanohttpdemo;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.webkit.WebResourceRequest;
  7. import android.webkit.WebSettings;
  8. import android.webkit.WebView;
  9. import android.webkit.WebViewClient;
  10. import android.widget.Button;
  11. import androidx.appcompat.app.AppCompatActivity;
  12. import me.yoqi.android.nanohttpdemo.service.LocalService;
  13. public class MainActivity extends AppCompatActivity {
  14. Button btnStart;
  15. WebView webView;
  16. Context mContext;
  17. boolean flag = false; //按钮 httpd 状态
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_main);
  22. mContext = this;
  23. initView();
  24. }
  25. void initView() {
  26. btnStart = findViewById(R.id.btn_starthttpd);
  27. webView = findViewById(R.id.wv_main);
  28. WebSettings webSettings = webView.getSettings();
  29. webSettings.setJavaScriptEnabled(true);
  30. //设置自适应屏幕,两者合用
  31. webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小
  32. webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小
  33. //缩放操作
  34. webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
  35. webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
  36. webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件
  37. //其他细节操作
  38. webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
  39. webSettings.setAllowFileAccess(true); //设置可以访问文件
  40. webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口
  41. webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
  42. webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
  43. btnStart.setOnClickListener(new View.OnClickListener() {
  44. @Override
  45. public void onClick(View v) {
  46. if (!flag) {
  47. startHttpd();
  48. flag = true;
  49. btnStart.setText("已启动");
  50. webView.loadUrl("http://localhost:7600");
  51. webView.setWebViewClient(new WebViewClient() {
  52. @Override
  53. public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
  54. return super.shouldOverrideUrlLoading(view, request);
  55. }
  56. });
  57. } else {
  58. stopHttpd();
  59. flag = false;
  60. btnStart.setText("已关闭");
  61. }
  62. }
  63. });
  64. }
  65. void startHttpd() {
  66. Intent intent = new Intent(mContext, LocalService.class);
  67. startService(intent);
  68. }
  69. void stopHttpd() {
  70. Intent intent = new Intent(mContext, LocalService.class);
  71. stopService(intent);
  72. }
  73. }