android:layout_width=“match_parent” android:layout_height=“match_parent” /> 3、在MainActivity.java活动里,添加相关方法,代码如下: package net.zy13.html5; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.Window; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //这是为了应用程序安装完后直接打开,按home键退出后,再次打开程序出现的BUG if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { //结束你的activity return; } // 隐藏标题栏,在加载布局之前设置(兼容Android2.3.3版本) requestWindowFeature(Window.FEATURE_NO_TITLE); getSupportActionBar().hide(); //加载webview控件 loadWebview(); //隐藏活动窗口 //setContentView(R.layout.activity_main); } private void loadWebview() { //实例化WebView对象 webview = new WebView(this); //设置WebView属性 WebSettings ws = webview.getSettings(); ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);//设置布局,会引起WebView的重新布局(relayout),默认值NARROW_COLUMNS ws.setLoadsImagesAutomatically(true);//自动加载图片资源 ws.setUseWideViewPort(true);//支持HTML的“viewport”标签或者使用wide viewport ws.setLoadWithOverviewMode(true);//缩小内容以适应屏幕宽度 ws.setJavaScriptEnabled(true);//执行javascript脚本 ws.setGeolocationEnabled(true);//启用定位 ws.setDomStorageEnabled(true);//启用DOM存储API webview.requestFocus(); webview.canGoForward(); webview.canGoBack(); webview.setScrollBarStyle(0); //加载需要显示的网页 webview.loadUrl(“http://37.zy13.net/”); //设置Web视图 setContentView(webview); } /** 设置回退 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法 @param keyCode @param event @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { webview.goBack(); //goBack()表示返回WebView的上一页面 return true; } return false; } } 4、在AndroidManifest.xml清单文件中,添加网络访问权限 5、使用签名打包生成apk文件的方法参考下面这篇文章 https://blog.csdn.net/qq15577969/article/details/109521414 二、WebView的WebSettings的相关设置 WebSettings webSettings=webView.getSettings(); setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(Content Url),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。 setAllowFileAccess (boolean allow) 是否允许访问文件,默认允许。注意,这里只是允许或禁止对文件系统的访问,Assets 和 resources 文件使用file:///android_asset和file:///android_res仍是可访问的。 setAllowFileAccessFromFileURLs (boolean flag) 是否允许运行在一个URL环境(the context of a file scheme URL)中的JavaScript访问来自其他URL环境的内容,为了保证安全,应该不允许。也请注意,这项设置只影响对file schema 资源的JavaScript访问,其他形式的访问,例如来自图片HTML单元的访问不受影响。为了防止相同的域策略(same domain policy)对ICE_CREAM_SANDWICH以及更老机型的侵害,应该显式地设置此值为false。 setAllowUniversalAccessFromFileURLs (boolean flag) 是否允许运行在一个file schema URL环境下的JavaScript访问来自其他任何来源的内容,包括其他file schema URLs. 参见setAllowFileAccessFromFileURLs(boolean),为了确保安全,应该设置为不允许,注意这项设置只影响对file schema 资源的JavaScript访问,其他形式的访问,例如来自图片HTML单元的访问不受影响。为了防止相同的域策略(same domain policy)对ICE_CREAM_SANDWICH以及更老机型的侵害,应该显式地设置此值为false。ICE_CREAM_SANDWICH_MR1 以及更老的版本此默认值为true,JELLY_BEAN以及更新版本此默认值为false setAppCacheEnabled (boolean flag) 应用缓存API是否可用,默认值false, 结合setAppCachePath(String)使用。 setAppCachePath(String) 设置应用缓存文件的路径。为了让应用缓存API可用,此方法必须传入一个应用可写的路径。该方法只会执行一次,重复调用会被忽略。 setAppCacheMaxSize (long appCacheMaxSize) 已废弃。设置应用缓存内容的最大值。所传值会被近似为数据库支持的最近似值,因此这是一个指示值,而不是一个固定值。所传值若小于数据库大小不会让数据库调整大小。默认值是MAX_VALUE,建议将默认值设置为最大值。 setBlockNetworkImage (boolean flag) 是否禁止从网络(通过http和https URI schemes访问的资源)下载图片资源,默认值为false。注意,除非getLoadsImagesAutomatically()返回true,否则该方法无效。还请注意,即使此项设置为false,使用setBlockNetworkLoads(boolean)禁止所有网络加载也会阻止网络图片的加载。当此项设置的值从true变为false,WebView当前显示的内容所引用的网络图片资源会自动获取。 setBlockNetworkLoads (boolean flag) 是否禁止从网络下载数据,如果app有INTERNET权限,默认值为false,否则默认为true。使用setBlockNetworkImage(boolean) 只会禁止图片资源的加载。注意此值由true变为false,当前WebView展示的内容所引用的网络资源不会自动加载,直到调用了重载。如果APP没有INTERNET权限,设置此值为false会抛出SecurityException。 setBuiltInZoomControls (boolean enabled) 是否使用内置的缩放机制。内置的缩放机制包括屏幕上的缩放控件(浮于WebView内容之上)和缩放手势的运用。通过setDisplayZoomControls(boolean)可以控制是否显示这些控件,默认值为false。 setCacheMode (int mode) 重写使用缓存的方式,默认值LOAD_DEFAULT。缓存的使用方式基于导航类型,正常的页面加载,检测缓存,需要时缓存内容复现。导航返回时,内容不会复现,只有内容会从缓存盘中恢复。该方法允许客户端通过指定LOAD_DEFAULT, LOAD_CACHE_ELSE_NETWORK, LOAD_NO_CACHE or LOAD_CACHE_ONLY的其中一项来重写其行为。 setCursiveFontFamily (String font) 设置WebView字体库字体,默认“cursive” setDatabaseEnabled (boolean flag) 数据库存储API是否可用,默认值false。如何正确设置数据存储API参见setDatabasePath(String)。该设置对同一进程中的所有WebView实例均有效。注意,只能在当前进程的任意WebView加载页面之前修改此项,因为此节点之后WebView的实现类可能会忽略该项设置的改变。 setDatabasePath (String databasePath) 已废弃,数据库路径由实现(implementation)管理,调用此方法无效。 设置数据库的存储路径,为了保证数据库正确运行,该方法必须使用一个应用可写的路径。此方法只能执行一次,重复调用会被忽略。 setDefaultFixedFontSize (int size) 设置默认固定的字体大小,默认为16,可取值1到72 setDefaultFontSize (int size) 设置默认的字体大小,默认16,可取值1到72 setDefaultTextEncodingName (String encoding) 设置默认的字符编码集,默认”UTF-8”. setDefaultZoom (WebSettings.ZoomDensity zoom) 已废弃。设置默认的缩放密度,必须在UI线程调用,默认值MEDIUM.该项设置在新应用中不推荐使用。如果WebView用于展示手机页面,可以通过调整页面的’meta viewport’ 标记中的’width’ 和 ‘initial-scale’属性实现预期效果,对于漏用标记的页面,可以使用setInitialScale(int)和setUseWideViewPort(boolean) . setDisplayZoomControls (boolean enabled) 使用内置的缩放机制时是否展示缩放控件,默认值true。参见setBuiltInZoomControls(boolean). setDomStorageEnabled (boolean flag) DOM存储API是否可用,默认false。 setEnableSmoothTransition (boolean enable) 已废弃,将来会成为空操作(no-op),设置当panning或者缩放或者持有当前WebView的window没有焦点时是否允许其光滑过渡,若为true,WebView会选择一个性能最大化的解决方案。例如过渡时WebView的内容可能不更新。若为false,WebView会保持精度(fidelity),默认值false。 setFantasyFontFamily (String font) 设置fantasy字体集(font family)的名字默认为“fantasy” setFixedFontFamily (String font) 设置固定的字体集的名字,默认为”monospace”。 setGeolocationDatabasePath (String databasePath) 定位数据库的保存路径,为了确保定位权限和缓存位置的持久化,该方法应该传入一个应用可写的路径。 setGeolocationEnabled (boolean flag) 定位是否可用,默认为true。请注意,为了确保定位API在WebView的页面中可用,必须遵守如下约定: (1) app必须有定位的权限,参见ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION; (2) app必须提供onGeolocationPermissionsShowPrompt(String, GeolocationPermissions.Callback)回调方法的实现,在页面通过JavaScript定位API请求定位时接收通知。 作为可选项,可以在数据库中存储历史位置和Web初始权限,参见setGeolocationDatabasePath(String). setJavaScriptCanOpenWindowsAutomatically (boolean flag) 让JavaScript自动打开窗口,默认false。适用于JavaScript方法window.open()。 setJavaScriptEnabled (boolean flag) 设置WebView是否允许执行JavaScript脚本,默认false,不允许。 setLayoutAlgorithm (WebSettings.LayoutAlgorithm l) 设置布局,会引起WebView的重新布局(relayout),默认值NARROW_COLUMNS setLightTouchEnabled (boolean enabled) 已废弃。从 JELLY_BEAN 开始,该设置无效。允许使用轻触摸做出选择和光标悬停。 自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。 既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化! 由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新! 如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿) 最后 针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。 (包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。 《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取! =“https://img-blog.csdnimg.cn/img_convert/f97d3aecaab80d61e5e60b934444d6ff.jpeg” /> 最后 针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。 (包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。 [外链图片转存中…(img-Y0hunwt2-1711540859449)] 《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取! 文章链接
上一篇
发表评论