android webview 缩放无图模式下如何设置一个默认图

查看: 3040|回复: 6
如何用webview获取网页上焦点所在处图片,保存在本地?
签到天数: 7 天连续签到: 1 天[LV.3]偶尔看看II主题帖子e币
没有eoe的账号,级别还太低,出门如何吹牛逼?
才可以下载或查看,没有帐号?
本帖最后由
14:00 编辑
在webview中点击网页上一张图片,弹出Dialog,提示是否保存。
请教一下。。。
请问我自己一个本地页面有个标签,
&a&&INPUT TYPE=&image& SRC=&./44.jpg&&&/a&
有《a》标签就能获取到焦点,可以点击。。。
在webview上可以获取焦点,我如何捕获它的点击事件,然后得到它的连接。
webView.setWebViewClient(rssClient);
WebViewClient rssClient里面的onPageStarted不能获取url,因为不是打开新页面。
该用户从未签到主题帖子e币
该用户从未签到主题帖子e币
别只说句JS好么??你能拿点代码什么的么?
该用户从未签到主题帖子e币
我说下思路吧,具体代码我抽出来太麻烦了
图片标签里面写好click()方法,方法里面调用js,把imgUrl传过来,然后调用java方法,到java里面就好做了,
js与java的互调网上找找就很多的。
哥,求救。。。
点击图片弹出对话框显示该图片。&
该用户从未签到主题帖子e币
呵呵,我的webview URL不是本地的,,是网上的,比如
该用户从未签到主题帖子e币
还没处理好呀?
该用户从未签到主题帖子e币
glf2868489 发表于
回复 jijisfan 的帖子
我说下思路吧,具体代码我抽出来太麻烦了
哥,求救。。。
点击图片弹出对话框显示该图片。
圣诞限量勋章
圣诞限量勋章
QQ已认证,此人靠谱
推荐阅读热门话题
6573335155154149969190817069626259715
5&分钟前半小时前昨天&23:59昨天&23:42昨天&23:37昨天&23:29昨天&23:29昨天&23:03昨天&22:34昨天&22:23昨天&22:16昨天&22:11昨天&22:09昨天&22:04昨天&21:07昨天&20:56
特别关注 /3
从基础入门到熟练精通,9个阶段知识体系图指引你逐步提升~还有技术问答+讲师互动,最新实战教程每日更新!
想学Android开发,但没有Java基础?Java体系庞大,不知道从哪学起?专门针对Android开发所需的Java基础教程,学这些,就够了!
eoe专家答疑活动开展至今有段日子了,后续也会继续开展。因此有必要把之前的专家答疑活动都汇总一下,方便大家统一查看和参与。
Powered byAndroid控件WebView(浏览器)常用功能(图片、缩放)例子介绍
Android系统默认提供WebView控件()来在应用中内嵌网页,使其具有浏览器的功能。WebView提供了灵活的配置来让用户自定义相关功能。前面说了关于,下面在代码中对其他功能做详细描述:
package com.orgcent.webview;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings.LayoutAlgorithm;
public class AndroidWebViewActivity extends Activity {
& & @Override
& & public void onCreate(Bundle savedInstanceState) {
& & & & super.onCreate(savedInstanceState);
& & & & setContentView(R.layout.main);
& & & & WebView content_wv = (WebView) findViewById(R.id.content_wv);
& & & & WebSettings ws = content_wv.getSettings();
& & & & ws.setJavaScriptEnabled(true); // 设置支持javascript脚本
& & & & ws.setAllowFileAccess(true); // 允许访问文件
& & & & ws.setBuiltInZoomControls(true); // 设置显示缩放按钮
& & & & ws.setSupportZoom(true); //支持缩放
& & & & /**
& & & & &* 用WebView显示图片,可使用这个参数
& & & & &* 设置网页布局类型:
& & & & &* 1、LayoutAlgorithm.NARROW_COLUMNS : 适应内容大小
& & & & &* 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放
& & & & &*/
& & & & ws.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
& & & & ws.setDefaultTextEncodingName(&utf-8&); //设置文本编码
& & & & ws.setAppCacheEnabled(true);
& & & & ws.setCacheMode(WebSettings.LOAD_DEFAULT);//设置缓存模式
& & & & //添加Javascript调用java对象
& & & & content_wv.addJavascriptInterface(this, &java2js&);
& & & & content_wv.setWebViewClient(new WebViewClientDemo());
& & & & content_wv.setWebChromeClient(new WebViewChromeClientDemo());
& & & & //设置打开的网页
& & & & content_wv.loadUrl(&&);
& & & & //使用WebView来显示图片
& & & & content_wv.loadData(&&img src=''/&&, &text/html&, &utf8&);
& & }
& & private class WebViewClientDemo extends WebViewClient {
& & & & @Override
& & & & public boolean shouldOverrideUrlLoading(WebView view, String url) {
& & & & & & view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器
& & & & & & return true;
& & & & }
& & }
& & private class WebViewChromeClientDemo extends WebChromeClient {
& & & & // 设置网页加载的进度条
& & & & public void onProgressChanged(WebView view, int newProgress) {
& & & & }
& & & & // 获取网页的标题
& & & & public void onReceivedTitle(WebView view, String title) {
& & & & }
& & & & // JavaScript弹出框
& & & & @Override
& & & & public boolean onJsAlert(WebView view, String url, String message,
& & & & & & & & JsResult result) {
& & & & & & return super.onJsAlert(view, url, message, result);
& & & & }
& & & & // JavaScript输入框
& & & & @Override
& & & & public boolean onJsPrompt(WebView view, String url, String message,
& & & & & & & & String defaultValue, JsPromptResult result) {
& & & & & & return super.onJsPrompt(view, url, message, defaultValue, result);
& & & & }
& & & & // JavaScript确认框
& & & & @Override
& & & & public boolean onJsConfirm(WebView view, String url, String message,
& & & & & & & & JsResult result) {
& & & & & & return super.onJsConfirm(view, url, message, result);
& & & & }
& & }
【上一篇】【下一篇】
您可能还会对这些文章感兴趣!
最新日志热评日志随机日志
日志总数:122 篇
评论总数: 篇
标签数量:256 个
链接总数:3 个
建站日期:
运行天数:3014 天
最后更新:Android4.4中WebView无法显示图片解决方案
在Android4.4之前我们在使用WebView时为了提高加载速度我设置了(myWebView.getSettings().setBlockNetworkImage(true);//图片加载放在最后来加载渲染)这样是为了先阻塞图片加载等文字加载完成加加载图。但是Android4.4要是这样设置的话,图片是不会加载的。我想Android4.4中对WebViewAPI进行了优化,这个设置成false估计图片和文字开启了两个线程进行加载,不会造成在此版本之前中加缓慢的情况。
目前,还不是太清楚Android4.4中对WebViewAPI进行了哪些方便的优化,过几天Android4.4的SDK估计就出来了到时看看估计就清楚了。
如果你碰到Android4.4中WebView无法显示图片,现在的解决方案是:myWebView.getSettings().setBlockNetworkImage(false);
什么原因暂时不要多问,等几天看看API也就清楚了。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何使用web视图在一个固定大小?
我需要这显示网页内容在一个固定的页面width和height。
我把web视图内的XML文件与200像素的高度,但同时加载该页面,直接重定向到默认浏览器视图。
而记者在手机的返回按钮,将其重定向到原来的页面,然后在web视图显示什么。
在我的xml文件
&WebView android:layout_width="fill_parent" android:layout_height="200px" android:id="@+id/wvbrowser" /&
wvbrowser=(WebView)findViewById(R.id.wvbrowser);
wvbrowser.loadUrl("");
那么,我错了吗?以及如何显示的WebView在固定的大小?
本文地址 :CodeGo.net/8148139/
-------------------------------------------------------------------------------------------------------------------------
1.试试这个...
创建一个单独的类。
public class HelloWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
然后在你这。
wvbrowser=(WebView)findViewById(R.id.wvbrowser);
wvbrowser.setWebViewClient(new HelloWebViewClient());
wvbrowser.getSettings().setJavaScriptEnabled(true);
wvbrowser.loadUrl("");
当点击来自网页在你的web视图的链接,默认的Android浏览器处理的意图,浏览网页,你的活动是不是技术上允许这样做。你需要重写WebViewClient类,并让你的web视图的活动来处理自己的URL请求。
setWebViewClient(new HelloWebViewClient());
上述行创建了一个WebViewClient,将加载此web视图到web视图选择的网址。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
该shouldOverrideUrlLoading(WebView函数,String)方法传递电流的WebView和请求的URL CodeGo.net,因此所有需要做的是加载的URL中指定的视图。返回true表示,已处理的URL和事件不应该宣传。
本文标题 :如何使用web视图在一个固定大小?
本文地址 :CodeGo.net/8148139/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联&系& c&o&d&e&g&o &@&1&2&6&.&c&o&m今天看啥 热点:
Android 各个版本WebView,android版本webview
转载请注明出处 &&http://blog.csdn.net/typename/&powered by miechal zhao : 前言:根据Google公布的Android 各个系统版本市场占有率(Google Android dashboards), Android 4.0及其以上系统将近90%左右,发展趋势必将是未来市面上几乎是Android 4.0以上系统。本文主要关注Android 4.0及以上系统WebView的实现,从Android WebView实现的Framework层大致可以分为三段Android 4.0系列,Android 4.1---4.3系列,Android 4.4及其以上系列。WebView差异& & &WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同时它也是一个ViewGroup可以有很多其他子View。在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit(http://www.webkit.org/)内核,而在Android 4.4及其以上Google 采用了chromium(http://www.chromium.org/)作为系统WebView的底层内核支持。在这一变化中Android 提供的WebView相关API并没有发生大变化,在4.4上也兼容低版本的API并且引进了少部分API。这里简单介绍下基于Chromium 的Webview和基于Webkit webview的差异,基于Chromium Webview提供更广的HTML5,CSS3,Javascript支持,在目前最新Android 系统版本5.0上基于chromium 37,Webview提供绝大多数的HTML5特性支持。Webkit JavaScript引起采用WebCore Javascript 在Android 4.4上换成了V8能直接提升JavaScript性能。另外Chromium 支持远程调试(Chrome DevTools)。& & & & & & & & & & & & & & &WebKit for WebView VS Chromium for WebView性能比对(测试环境 小米2. CM Browser. Android 4.1.1 VS 4.4.3)&Webkit&for&WebviewChromium&for&Webview备注HTML5278434/远程调试不支持支持Android 4.4及以上支持内存占用小大相差20-30M左右WebAudio不支持支持Android 5.0及以上支持WebGL不支持支持Android 5.0及以上支持WebRTC不支持支持Android 5.0及以上支持Android 4.0 WebView结构Android WebView API层主要提供给我们应用程序的接口,为了兼容向下版本Android在高版本中也是对这一层的API进行支持,因此如果底层发生变化,这些API接口层也不会发生太大变化。Android 平台不仅提供应用层编程接口也提供native层编程。下面介绍上图中的三个部分:1)Android Framework:Android WebView是个特殊控件实现的支持需要Framework的代码主要在./frameworks/base/core/java/android/webkit目录下,在Android 4.0实现主要是在WebViewCore.java,BrowserFrame.java等文件。2) Android JNI:需要有Native代码支持,因此需要有JNI层实现,Android WebView 4.0的JNI层实现WebView相关代码在./external/webkit/Source/WebKit/android/jni/目录下,这一层起到承上启下的作用,链接Framework层以及WebKit层的桥梁,比如相关的一些实现在WebviewCore.cpp,WebCoreFrameBridge.cpp等。3) WebKit: WebKit内核,其核心主要是解析W3C标准以及渲染排版网页,他是一个跨平台的内核引擎,那么需要支持各个平台,需要我们的平台实现层,在Android 4.0系统这一部分相关代码主要在./external/webkit/Source/WebKit/android/WebCoreSupport/目录下,比如FrameLoaderClientAndroid.cpp,ChromeClientAndroid.cpp,这一层负责WebCore与系统平台的桥接,具体在不同平台会有不同的实现。实现网页的解析排版及渲染由WebCore来实现在Android 4.0源码当中代码位于./external/webkit/Source/WebCore/下,下面有WebCore实现的各个模块功能支持的相关代码,比如页面视图部分在page目录的chrome.cpp,比如加载页面需要的资源的loader中得FrameLoader.cpp等,这里不在继续深入详解,有兴趣的朋友可以下载Android 4.0源码阅读。Android 4.1--4.3 WebView结构Android 4.1--4.3版本WebView内核实现还是基于WebKit,但在WebView的Framework层发生了变化,引入了工厂模式,目地是为了将内核与上层API接口分离开来,分离的意义不仅仅是抽象接口,更重要的是将来能替换内核部分的实现。 在4.1--4.3这一系列版本native结构基本与4.0版本相同,下图呈现新的变化:Android 4.0--4.3 渲染尽管之前4.0,与4.1--4.3是在不同的结构系列,其两者之间的差异主要是集中的Framework上的变化,这种变化更多体现在Framework层结构上的变化,WebKit内核极其在Android上的表现机制并没有发生很大变化,他们的渲染机制是相同的。下面介绍Android 4.0--4.3的渲染机制:在Android 4.0上已经默认开启硬件加速,因此WebView的渲染默认是基于硬件渲染的,通过本人分析其在WebView被隐藏的那一帧是采用软件渲染,目的是减少硬件占用,让其他UI能及时的响应。在硬件渲染情况下WebView通过onDraw方法传递Canvas 并将其转行为HardwareCanvas ,并生成native的 DrawGLFunction指针,通知native做渲染。在软件模式下,WebView通过传递的Canvas 通知内核webkitDraw将内核的一帧生成picture传输到Canvas中,执行Canvas draw bitmap。Android 4.4 WebView结构在Android 4.4系统上 Google已经将系统默认的Webkit内核替换成自己的开源项目chromium,通过之前的版本分析,我们可以看到Android 对WebView的Framework 结构进行调整使其更抽象,更重要的目的还是集成自己的开源chromium。下面我们来看看WebView的结构发生了什么样的变化:目录:./frameworks/base/core/java/android/webkit./frameworks/webview/chromium/java/com/android/webview/chromium./external/chromium_org/android_webview./external/chromium_org/content为了将chromium项目集成到Android 中,chromium项目抽象出Android webview这一层,之前的接口抽离这时候已经变得很明显,Android Webview基于chromium content API这一层,第三方浏览器厂商也可以采用这种方式,目前所了解的厂商有Opera使用这种方式。Android 4.4WebView的渲染核心目前也没有发生太大变化,还是基于WebView的Canvas,将Chromium composit 结构绘制到WebView Canvas上。接入chromium内核,WebView浏览性能大幅度提升,但是和chrome for Android还是有些不同,主要体现在一下几点:1. chrome浏览器是多进程架构,Chromium for Android Webview 是单进程架构。2. chrome浏览器 内存占用比 Android WebView大的多。3. chrome支持更多的HTML5 feature。Android WebView展望:Chromium项目编译&android_webview_apk“ 目前实现是基于Android SurfaceView,其渲染性能高于Android WebView的Canvas,历史遗留问题以及Android 系统WebView的作用特点,这一块随着Chromium 和 Android项目的整合,相信值得大家期待将来的Android WebView 的渲染性能会再次大幅提升。本博客会持续更新Android WebView后续版本的变化,敬请关注 谢谢!参考资料:/&Android 4.0---4.4/reference/android/webkit/WebView.html
你的问题有点不明白阿。所谓版本,就是一个东西,做了功能的添加修改删除等之后,为了和之前东西区别,就做了号码的标记,就是版本号。一个系统开发,是有不同层的。有内核阿,应用层阿,画面等等。不同的区域,开发是相对独立的。因为不同的版本,功能可能不一样,多一对于开发人员,版本号很重要。给你举一个例子。开发android软件的时候,要用android的SDK,SDK的版本号就是你说的android版本。webview的一个方法loadUrl,在2.1之前只有一个参数loadUrl(String),而在2.2之后就变成了loadUrl(String, Map&String, String&)。如果我用的是后面的方法做的软件,而你的手机是2.1,那么你就不能用我开发的东西。大概就是这个意思了。所以下载软件的时候,看一下要求的最低版本,主意一下就行了。你说的那写版本,没什么特殊意义。
它主要被设计用来显示html文件。正因为如此,所以在应用的开发过程中我们可以通过将需要显示的内容整理成html格式的String从而轻松实现各种排版的效果。虽然WebView组件封装了许多功能为应用的开发提供了便利,但是由于其开放的方法有限,有时候这种便利往往会给开发者造成很大的约束,例如开发者不能方便的控制WebView的显示起始行,不能得到相关的行信息等。所以说WebView方便大众的时候也难免会存在许多不足之处。寡人在开发应用的过程中就遇到了一个难题:将html中指定的内容显示到当前屏幕中。怎么解决这个问题呢?寡人一遍遍地研究WebView开放的方法,始终没有得到很好的方案。白道不行,咱就来黑道,正史不行,咱就搜集野史,所谓条条大路通罗马嘛!于是寡人就到处搜寻WebView的源代码,希望通过非常规的办法(调用WebView类库中未开放的方法)有所起色。但是非常困难。并且显而易见,即使找到了,也是不安全的调用。这就像上海的楼倒倒,说不定什么时候就坍为平地。此路不但坎坷,前途未卜,而且有可能是断头路。苍天啊!寡人虽然贵为天子但是有时候也很无奈,怎么办?寡人再次无奈地又审视了一下WebView开放的那几个可怜的方法。最后想了想,它们中最有希望救驾的只有findAll和findNext了。于是寡人想,如果能保证需要定位的内容的唯一性,通过搜寻需要定位的内容,不就把该内容显示到当前屏幕了吗?于是寡人大喜,打算着手一试,成功后举国欢庆。但是,寡人一看帮助文档,这两个方法的说明为空,于是心中隐隐约约有一丝不安。果不其然,程序中一试,没有任何效果。寡人只好去咨询中西两位辅政大臣百度和谷歌了。终于有了答案。下面就下诏天下,各位爱卿听仔细了:先看辅政大臣给朕的说法:Find is not a fully supported feature in webview.However, try calling view.setFindIsUp(true) to g This function is hidden and subject to change, so your app may break in a future release.WebView对搜寻查找功能不能充分地支持。然而,我们可以尝试着调用setFindIsUp方法来得到查询的结果,并且把它显示在当前屏幕(画出来)。这个方法被隐藏并且容易发生变化,所以你的应用或许在未来的版本中不能正常地使用它。由此可见,要想findAll和findNext起作用,必须调用setFindIsUp方法,但是此方法是内部函数,因此安全性不能保证,或许在未来某个版本就被和谐了。尽管如此,这也是目前唯一较稳妥的一种解决方案。以后版本如果不能正常使用,说不定WebView会有更好的支持方法呢!Example :假设WebView已经装载了html内容,下面是搜寻部分的程序:WebView webView = (WebView)findViewById(R.id.webView) ;webView.findAll(a) ;try{Method m = WebView.class.getMethod(setFindIsUp, Boolean.TYPE) ;m.invoke(webView, true) ;}catch(Throwable ignored){}findNext的使用同理,这里不再累述。总结:lWebView的findAll & find......余下全文>>
相关搜索:
相关阅读:
相关频道:
Android教程最近更新

我要回帖

更多关于 android webview 的文章

 

随机推荐