要读取assets下的目录,只需要修改三个地方即可

1.res/layout/activity_main.xml

2.AndroidManifest.xml

3.src\com\example\lcy\MainActivity.java

第一步.res/layout/activity_main.xml加入代码,需要在xml布局文件中声明WebView组件

<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

全部代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/> </RelativeLayout>

第二部,AndroidManifest.xml 代码

加入代码:由于不是用Intent去调用系统组件,所以我们需要对程序进行权限的允许,在AndroidManifest.xml里对程序开放Inter权限

<uses-permission android:name="android.permission.INTERNET"/>

如果出现  webpage not available 在AndroidManifest.xml可以加入以上代码

全部代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lcy"
android:versionCode=""
android:versionName="1.0" > <uses-sdk
android:minSdkVersion=""
android:targetSdkVersion="" />
<uses-permission android:name="android.permission.INTERNET"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.lcy.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>

 

3.src\com\example\lcy\MainActivity.java 在Activity中实例化WebView,并且可通过loadUrl(url)方法打开指定url资源,加入代码

public class MainActivity extends Activity {

    private WebView webView;
//private String url = "http://www.baidu.com";
private String url = "file:///android_asset/www/index.html";
private ProgressDialog progressDialog; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initWebView();
} private void initWebView() {
webView = (WebView) findViewById(R.id.webview);// 获取控件
webView.loadUrl(url);// 载入指定url(系统自带浏览器,若想用自身webview需要重写方法,提供client)
WebSettings webSettings = webView.getSettings();// 获取配置信息
webSettings.setJavaScriptEnabled(true);// 是否允许加载js文件
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 打开缓存
webView.setWebViewClient(new WebViewClient() {
/**
* 重写shouldOverrideUrlLoading,返回值若为true则用webview,false则是系统自身浏览器
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}); webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {// newProgress当前进度
if (newProgress == ) {
// 加载完毕,关闭进度条
closeProgressDialog();
} else {
//加载未完成,显示进度
showProgressDialog(newProgress);
}
super.onProgressChanged(view, newProgress);
} private void closeProgressDialog() {
progressDialog.dismiss();
progressDialog=null; } private void showProgressDialog(int newProgress) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("页面正在加载中..请稍后");
progressDialog
.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式
progressDialog.setProgress(newProgress);//设置进度
progressDialog.show();
} else {
progressDialog.setProgress(newProgress);
progressDialog.show();
} }
}); } @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// keyCode代表按键的数字标示符
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
} else {
System.exit();
}
} return super.onKeyDown(keyCode, event);
} }

全部代码(有部分代码不用用管它,增加了public 、private 会自动增加,保证把上面的代码加进去就可以了)

package com.example.lcy;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient; public class MainActivity extends Activity { private WebView webView;
//private String url = "http://www.baidu.com";
private String url = "file:///android_asset/www/index.html";
private ProgressDialog progressDialog; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initWebView();
} private void initWebView() {
webView = (WebView) findViewById(R.id.webview);// 获取控件
webView.loadUrl(url);// 载入指定url(系统自带浏览器,若想用自身webview需要重写方法,提供client)
WebSettings webSettings = webView.getSettings();// 获取配置信息
webSettings.setJavaScriptEnabled(true);// 是否允许加载js文件
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 打开缓存
webView.setWebViewClient(new WebViewClient() {
/**
* 重写shouldOverrideUrlLoading,返回值若为true则用webview,false则是系统自身浏览器
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}); webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {// newProgress当前进度
if (newProgress == ) {
// 加载完毕,关闭进度条
closeProgressDialog();
} else {
//加载未完成,显示进度
showProgressDialog(newProgress);
}
super.onProgressChanged(view, newProgress);
} private void closeProgressDialog() {
progressDialog.dismiss();
progressDialog=null; } private void showProgressDialog(int newProgress) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(MainActivity.this); progressDialog.setTitle("页面正在加载中..请稍后");
progressDialog
.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式
progressDialog.setProgress(newProgress);//设置进度
progressDialog.show();
} else {
progressDialog.setProgress(newProgress);
progressDialog.show();
} }
}); } @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// keyCode代表按键的数字标示符
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
} else {
System.exit();
}
} return super.onKeyDown(keyCode, event);
} }

详情查看  http://www.cnblogs.com/lichenwei/p/3959345.html

WebApp基础01-设置读取assets目录下文件的更多相关文章

  1. [转]读取assets目录下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  2. QLGame 2d Engine Android端环境搭建(通过jni读取assets目录的文件)

    QLGame 2d Engine win端已经实现了一个动物的动画了,初步的东西已经完成,考虑在Android端也实现这些基本的东西,这样跨平台的引擎也就实现了! 要在Android下编程,首先要实现 ...

  3. Android读取assets目录下的资源

    1.获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“s ...

  4. SpringBoot打成jar包后,获取不到读取resources目录下文件路径的问题

    问题描述: Springboot没有打成jar之前,可以成功获取读取resources目录下xxx.json文件的 路径.但是打成jar包后,接口调不通,原因是获取不到文件的路径. 原因: 在本地进行 ...

  5. IDEA中读取 resource目录下文件

    1. 资源文件 2. 加载文件 public void test() { try { System.out.println("begin test"); String filepa ...

  6. 发布jar包到服务器读取resource目录下文件

    * 解决:当项目打包成jar之后resources路径下面的证书文件访问不到* 思路:* 1.运行时先复制一个jar* 2.将复制的jar解压到jar文件目录* 3.删除复制的jar跟解压的非证书文件 ...

  7. SAS 读取指定目录下文件列表宏

    OPTIONS PS=MAX LS=MAX NOCENTER SASMSTORE=SASUSER MSTORED MAUTOSOURCE;/*获取指定文件夹的指定类型的所有文件*/%MACRO GET ...

  8. Eclipse 读取config目录下文件

    最近在一个项目,在项目下新建了一个config配置文件夹,添加一个配置文件config.properties. 使用classpath:config.properties方式加载配置文件, 具体实现代 ...

  9. 关于Linux上面无法读取资源目录下文件的问题

    一开始我的代码是这样子的,读取本地子路径下的json文件 代码运行的时候,在window是可以正常的 @Override public String getBannerStr() { String s ...

随机推荐

  1. 【BZOJ 4518】【SDOI 2016 Round1 Day2 T3】征途

    比较明显的斜率优化DP,省选时因为时间太紧张和斜率DP写得不熟等原因只写了60分的暴力DP,其实当时完全可以对拍来检验标算的正确,但是我当时too naive- 很快打完了,调了将近一晚上QAQ,因为 ...

  2. python之旅【第一篇】

    python简介 python的起源 追溯Python语言的起源,是从20世纪90年代初由Guido van Rossum,在阿姆斯特丹,开发一个新的脚本解释程序.不知道Guido当初有没有想到,Py ...

  3. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  4. js-form进行reset重置

    (需要注意:做这个reset和submit时页面不能有这两个id和名称) <form id="form1" name="formName" action= ...

  5. 在浏览器中输入URL后执行的全部过程的个人总结

    这个问题经常可以看到,今天我好好总结了下,是从网络模型的角度来分析问题的,主要涉及应用层:DNS,HTTP,传输层:TCP,网络层:IP和路由选择协议:RIP,OSPF(内部网关协议),BGP(外部网 ...

  6. 在ORACLE触发器里调用JAVA程序

    因为项目需要,有一个已经写好的Java程序,想要在Oracle某个表的触发器中调用,以使得每次数据更新时,调用这个JAVA程序,来修改后台某个数据. 现将过程记录如下: 1.编写JAVA程序 publ ...

  7. Android Studio配置指南总结

     转载:http://blog.csdn.net/mynameishuangshuai/article/details/51332790 使用AndroidStudio开发APP已有半年多的时间了,从 ...

  8. Hdfs常用操作

    一.linux rm是删除,不是del 二.常用操作 package hdfs; import java.io.FileInputStream; import java.io.FileNotFound ...

  9. Namenode主节点停止报错 Error: flush failed for required journal

    主节点间歇性报错其他没有问题 ,SNN的NN没有问题,相关的journalNode也都在,就是主节点的NN会停止. 查看hadoop主节点的NN日志. 2016-11-21 22:36:40,908 ...

  10. oracle的resetlogs机制浅析(转)

    文章转自:http://blog.csdn.net/wyzxg/article/details/5869543 alter database open resetlogs 这个命令我想大家都很熟悉了, ...