Android Studio 打包webapp (红色字体为你要写的代码)

Android Studio安装包下载地址 里面有带jdk的安装包
http://www.android-studio.org/

以下代码整理实践,亲测可行

 

 

 

 

 

 

1、控件准备   res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.zwc.plan.MainActivity">


<!--用于加载打包网站的容器-->
<WebView
android:id="@+id/myWeb"
android:layout_width="match_parent"
android:layout_height="match_parent" >

</WebView>
    
<!--用于解决加载长时间空白页面问题-->
<ImageView
android:id="@+id/loadImg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/load"
android:scaleType="fitXY" />


</android.support.constraint.ConstraintLayout>

 

2、 主体代码 java/com/example/zwc/myapplication/MainActivity.java

package com.example.zwc.plan;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

private WebView webView ;
private ImageView loadImg;
private ProgressDialog dialog;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 此处只做静态图片演示 加载gif图还需要另外的操作
loadImg = (ImageView) findViewById(R.id.loadImg);
// 实例化webView
webView = (WebView) findViewById(R.id.myWeb);


// 加载进度条
dialog = ProgressDialog.show(MainActivity.this, "", null);

webView.setWebViewClient(new WebViewClient() {



//webView加载完毕
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Toast.makeText(MainActivity.this,"加载完毕",Toast.LENGTH_SHORT).show();

// 加载完成后把loading图片 和进度条隐藏
loadImg.setVisibility(View.GONE);
dialog.dismiss();

// 注意:invisible--不显示,但保留所占的空间;visible--正常显示;gone:不显示,且不保留所占的空间
// 可见:view.setVisibility(View.VISIBLE);
// 不可见:view.setVisibility(View.INVISIBLE);
// 隐藏:view.setVisibility(View.GONE);


}
//webView开始加载
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// Toast.makeText(MainActivity.this,"开始加载",Toast.LENGTH_SHORT).show();
}
} );



webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
webView.getSettings().setJavaScriptEnabled(true);//是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞

// webView.getSettings().setSupportZoom(true);//是否可以缩放,默认true
// webView.getSettings().setBuiltInZoomControls(true);//是否显示缩放按钮,默认false
// webView.getSettings().setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式

webView.getSettings().setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题

webView.getSettings().setAppCacheEnabled(true);//是否使用缓存
// 分别用于会话级别的存储 sessionStorage(页面关闭即消失)和本地化存储 localStorage(除非主动删除,否则数据永远不会过期)
webView.getSettings().setDomStorageEnabled(true);//DOM Storage 没有就出不来


// webView.getSettings().setUserAgentString("User-Agent:Android");//设置用户代理,一般不用

// 打包在线网站
webView.loadUrl("http://49.233.168.180:7777/app_log");
// 加载本地assets目录下项目
// webView.loadUrl("file:///android_asset/app_log/index.html");

}


// overwrite back button 处理返回
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}

}

 

3、 去掉Android 自己的title  res/values/styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>


<!--自己新增的去掉title-->
<style name="NoTitleStyle" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>


</resources>

然后把 AndroidManifest.xml 中主题设置  android:theme="@style/AppTheme" 改为   android:theme="@style/NoTitleStyle"

 

4、开启网络连接  AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.zwc.plan">

  <!--开启网络连接-->
<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"

android:usesCleartextTraffic="true"

android:theme="@style/NoTitleStyle"

>
    //android:theme="@style/NoTitleStyle" 上一步中的修改主题title
    //android:usesCleartextTraffic="true"  android5 之后 需要加上此设置 才能打开网络连接 ,5以前只需要<uses-permission android:name="android.permission.INTERNET" />

<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

 

posted on 2021-12-09 23:31  风从哪个方向来、  阅读(409)  评论(0)    收藏  举报