Android webview 使用自定义自体
来源:互联网 发布:淘宝ipad货源 编辑:程序博客网 时间:2024/06/12 01:11
原文:http://blog.isming.me/2015/07/07/android-custom-font/
最近的一个项目中有个需求:app与webview需要统一使用自定义字体。
一:修改App的默认字体
1.把myfont.ttf放在assets/fonts 目录下
2.配置Calligraphy
dependencies {
compile
'uk.co.chrisjenx:calligraphy:1.2.0'
}
2.在 BaseApplication extends Application 的onCreate 方法中
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/myfont.ttf") .setFontAttrId(R.attr.fontPath) .build()3.在BaseActivity 中重写attachBaseContext方法
protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }二:修改webview里网页的字体:
1.对于本地的网页,在asset目录放字体文件,并在css中添加以下内容,自定义一个字体face,并且在需要的地方使用这个字体face即可。
@font-face { font-family: 'MyCustomFont'; src: url('file:///android_asset/fonts/myfont.ttf'); }body{ font-family:"MyCustomFont";}
2.对于在线的网页,则需要把字体文件放到服务器,使用同样的方式定义字体face,应用到每个地方。
为了减少网页或者说服务器端的工作,可以使用本地注入的方式注入font-face的css,并对整个网页进行样式替换。
给webview自定义webViewClient,重写onPageFinish
,在其中添加如下内容:
public void onPageFinished(WebView view, String url) {injectCSS();view.loadUrl("javascript:!function(){" + "s=document.createElement('style');s.innerHTML=" + "\"@font-face{font-family:myhyqh;src:url('****/fonts/myfont.ttf');}*{font-family:myhyqh !important;}\";" + "document.getElementsByTagName('head')[0].appendChild(s);" + "document.getElementsByTagName('body')[0].style.fontFamily = \"myhyqh\";}()");super.onPageFinished(view, url);}
****/fonts/myfont.ttf //这里的* 号是为了让它走:shouldInterceptRequest重写vwebview的shouldInterceptRequest方法:
public WebResourceResponse shouldInterceptRequest(WebView view,String url) {WebResourceResponse response = super.shouldInterceptRequest(view, url);Log.i("webview","load intercept request:" + url); if (url != null && url.contains("myfont.ttf")) { String assertPath ="fonts/myfont.ttf"; try { response = new WebResourceResponse("application/x-font-ttf","UTF8", getAssets().open(assertPath)); } catch (IOException e) { e.printStackTrace(); } }return response;}
这样网页被新字体重新渲染就达到目的了
0 0
- Android webview 使用自定义自体
- Android Webview使用自定义字体加载网页
- 【Android】webView 使用 系统自带搜索对话框问题
- Android 简单自定义WebView
- Android Webview自定义UserAgent
- 抛弃Android自带webview浏览器内核,使用腾讯X5服务webview浏览器
- 抛弃Android自带webview,使用腾讯qq浏览器x5内核的webview浏览器
- android webview自带下载
- Android中Webview使用自定义的javascript进行回调
- Android中Webview使用自定义的javascript进行回调
- Android中Webview使用自定义的javascript进行回调
- 【Android】Webview使用自定义的javascript进行回调
- WebView--- Android WebView使用总结
- android webview添加自定义progressbar
- Android WebView 自定义Context Menu
- Android 自定义WebView 实现 NestedScrollingChild
- Android 自定义WebView 实现 NestedScrollingChild
- 使用WebView自定义加载网页
- 内核ASoC之path
- java计时
- iOS中正确的截屏姿势
- erl_线性结构-折半查找
- N宫格之横竖斜的和都相等
- Android webview 使用自定义自体
- 关于Ubuntu下移植数据库
- Spark on Yarn+Hbase环境搭建指南(五)HBase安装
- vc6.0快捷键汇总
- MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)
- c语言之建立单链表
- Rendering with Vertex Lighting
- Linux学习笔记----CentOS 在什么情况下,进入图形界面安装模式 ??
- BST