WebApp基础01-设置读取assets目录下文件

要读取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" ><TextViewandroid: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="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid: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;@Overrideprotected 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则是系统自身浏览器*/@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}});webView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {// newProgress当前进度if (newProgress == 100) {// 加载完毕,关闭进度条
                    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();}}});}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// keyCode代表按键的数字标示符if (keyCode == KeyEvent.KEYCODE_BACK) {if (webView.canGoBack()) {webView.goBack();return true;} else {System.exit(0);}}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;@Overrideprotected 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则是系统自身浏览器*/@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}});webView.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {// newProgress当前进度if (newProgress == 100) {// 加载完毕,关闭进度条
                    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();}}});}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// keyCode代表按键的数字标示符if (keyCode == KeyEvent.KEYCODE_BACK) {if (webView.canGoBack()) {webView.goBack();return true;} else {System.exit(0);}}return super.onKeyDown(keyCode, event);}}

 

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

转载于:https://www.cnblogs.com/wesky/p/3962784.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue借助axios实现网络通信

vue的好处之一&#xff0c;只关注视图层。对于通信&#xff0c;可以在vue实例对象创建前通过mounted钩子函数发送ajax请求&#xff0c;来拿到json数据。 发送请求通过axios&#xff0c;或者jQuery发送。 请求的数据在response对象里面。并绑定到vue对象data方法里。 1. 要访问…

vue自定义组件,插槽,自定义事件

vue组件套娃1. vue自定义组件2. 组件和插槽套娃3. vue组件通过自定义事件更改vue实例中的数据1. vue自定义组件 语法 Vue.component(自定义组件名, {props: [var1, var2, var3], //每个属性可以和页面绑定值template: <p>{{ var1 }}</p> // 自定义模板 里面套htm…

【编程题目】给你 10 分钟时间,根据上排给出十个数,在其下排填出对应的十个数...

第 6 题&#xff08;数组&#xff09;腾讯面试题&#xff1a; 给你 10 分钟时间&#xff0c;根据上排给出十个数&#xff0c;在其下排填出对应的十个数 要求下排每个数都是先前上排那十个数在下排出现的次数。 上排的十个数如下&#xff1a; 【0&#xff0c;1&#xff0c;2&…

vue脚手架v-cli,第一个vue程序

运行在node服务器上的vue程序1. v-cli安装2. 使用webpack构建vue程序3. 目录介绍4. webpack将vue打包成js文件1. v-cli安装 在玩v-cli vue客户端脚手架时&#xff0c;需要安装好node.js&#xff0c;是前端管理js包的工具正式安装vue-cli脚手架 1. npm install vue-cli -g 2. …

Shallow Copy Deep Copy in Python list

今天在写一个小程序的时候用到了2维数组, 顺手就写成了[[0.0]*length]*length, 结果为了这个小错,调试了半个多小时, 其实之前对与浅复制和深复制已经做过学习和总结, 但真正编程用到这些知识时还是掉入了陷阱中. 所以在此做进一步的总结: 本文通过几个实例来说明Python中list的…

python学习之wxPython

1、成功安装wxPython 2、第一个小图形化界面的小程序—创建并显示一个web小框架 参考http://www.cnblogs.com/fnng/archive/2013/05/23/3094033.html #! /usr/bin/env python#codingutf-8import wxappwx.App()winwx.Frame(None)win.Show()app.MainLoop() 3、运行报错 > &qu…

ssh框架搭建

下载地址&#xff1a;源码和详细搭建步骤 使用myeclipse2014搭建ssh框架1. spring搭建2. struts2搭建3. hibernate搭建4. applicationContext编写5. web.xml编写1. spring搭建 创建一个javaweb项目 导入spring框架 最高版本3.1支持 4. 选择类库 spring导入完毕 2. str…

iOS: 图解Xcode常用的快捷键

对于习惯了Windows 操作的开发者来说&#xff0c; 初次接触Xcode时&#xff0c;你会感到有种种不适&#xff0c;其中一个重要的原因就是&#xff0c; 相比Windows X86 电脑&#xff0c; Mac 多出了两个物理键&#xff1a; Fn 和 Command。 尤其是 Command键&#xff0c;在 Ma…

vue参数传递

目标&#xff1a;纯前端vue实现页面跳转restful传值 目录1. 全局路由配置2. 如何传值3. 页面取值1. 全局路由配置 // 路由器主配置文件 import Vue from vue import VueRouter from vue-routerimport Main from ../views/main import Login from ../views/login// 导入用户模块…

adb——Android的ADB工具使用

一、定义与作用&#xff1a; ADB全称Android Debug Bridge, 就是起到调试桥的作用。是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备,默认情况下当我们运行Eclipse时adb进程就会自动运行。当然我们也可以在外部使用本身自带的一些命…

beforeRouteEnter,beforeRouteLeave函数

操作&#xff1a; 是时机函数&#xff0c;在页面加载前&#xff0c;可以在这两个函数里面做一些事情&#xff0c; 比如发送异步请求。 类似过滤器&#xff0c;或者拦截器。1. axios安装 安装报错&#xff0c;多装几遍&#xff0c;或者用cnpm安装 npm install axios -s npm in…

排错“未能封送类型,因为嵌入数组实例的长度与布局中声明的长度不匹配”...

问题&#xff1a;在C#给C传数组类型数据时报此错&#xff0c;相应英文信息为“Type could not be marshaled, because the length of an embed array doesnt not match the declared length in the layout” 原因1、声明的数组长度和实际的数组长度不一致&#xff0c;比如声明的…

a标签的href与onclick中使用js的区别

href与onclick中javascript的区别一般没用到都没注意&#xff0c;但出错时才有些郁闷&#xff0c;看文本章解释如下&#xff1a; 以前一直很随意&#xff0c;后来看.net里的linkbutton似乎是用在<a href"javascript:fun();"...>的形式&#xff0c;今天用这种方…

手把手教你搭建springboot程序

spring-boot项目搭建一、从官网搭建1、进入spring官网&#xff0c;快速初始化一个项目2、填写项目基本信息3、项目结构分析4、添加项目依赖5、下载到本地6、解压7、idea&#xff0c;打开&#xff0c;使用maven构建项目8、使用maven构建9、这是构建好的&#xff0c;其它目录全部…

jquery的鼠标移入移出事件hover、mouseenter、mouseleave、mouseover、mouseout

hover:鼠标进入元素的子元素时不会触发‘鼠标移开’的事件&#xff1b;mouseenter、mouseleave&#xff1a;效果与hover相同&#xff1b;mouseover&#xff1a; 鼠标进入元素和进入它的子元素时都会触发‘mouseover’的事件&#xff0c;即使添加了event.stopPropagation();retu…

yaml格式,给Java类绑定数据

这里写目录标题1、基本语法2、给java bean注入值3、测试1、基本语法 # yaml 配置文件写法&#xff0c;代替properties写法 # 严格区分空格# 内注入到配置类中 server:port: 8081# 对象 student:name: jackage: 3# 行内写法 map student1: {name: jack, age: 3}# array or coll…

android编程常见问题- Resource ID #0x7f070001 type #0x12 is not valid

问题说明&#xff1a; AndroidRuntime(1705): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.activitytest/com.example.activitytest.SecondActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f070001 type #…

scm 软件配置管理

目录1、为什么需要使用SCM2、什么是SCM3、作用变更控制&#xff1a;版本控制的内容版本控制策略4、版本控制工具1、为什么需要使用SCM 1. 更改源文件&#xff0c;但不知道哪个是最新的&#xff1b; 2. 我不了解文件的修改过程&#xff0c;尤其是最后修改了哪几行以及为什么修改…