[Phonegap+Sencha Touch] 移动开发43 WebApp字体图标的制作

Sencha touch从2.2开始,里面用到的图标全部是字体图标(icon font),也就是字体文件里面的字符作为图标来用。

主要特性

字体是矢量的,使用icon font来生成图标相对于基于图片的图标来说,有如下的好处:

  • 自由的变化大小而不失真,适用于不同分辨率和尺寸的屏幕
  • 自由的修改颜色
  • 添加阴影效果
  • 支持图片图标的其它属性,例如,透明度和旋转等等
  • 可以添加text-stroke和background-clip:text等属性,只要浏览器支持

字体图标的用法

我们来看下sencha touch程序中图标是怎么用的:

这个"+"图标实际上是Pictos字体中的"&"字符。

(我们自己写个div,然后写上样式:before伪类样式,也能显示出来图标,并不是只有按钮才能用的)

字体图标的几种格式

字体图标文件,有4种格式,我们可以打开 ST项目\touch\resources\themes\fonts\pictos,看到里面有如下4个文件:

pictos-web.eot

pictos-web.svg

pictos-web.ttf

pictos-web.woff

(eot格式,只能用于IE9及以下版本的IE浏览器中。剩下的3个格式用于现代高级浏览器。)

为什么要用3种格式呢?主要是因为不同系统不同浏览器支持的字体格式不一样或者不完全支持某种格式的字体。我们可以看下面三幅图,表示不同浏览器对这三种字体格式的支持程度:

(以上来自Can I Use网站)

字体图标的制作1:下载网上提供的字体图标

先介绍几个字体图标的下载网站:

1、IcoMoon

2、Fontello

3、FontsAddict 这个是一个字体图标搜索引擎,提供的字体图标最多

至于如何下载,可以看我以前的这篇博文:《移动开发7、Sencha Touch图标的使用与自定义

字体图标的制作2:将自己的图片转为字体图标

有时候我们可能在网上找不到我们需要的字体图标。估计大部分人都不是美工,不会设计矢量图,最多能用ps画个简单的图,或者下载一些png格式的图标文件,我们该怎么把这些png格式的图片转为字体文件呢?

1、下载inkscape:

https://inkscape.org/en/download/

注意下载对应操作系统的版本,下载完之后安装

2、打开inkscape,文件->打开->选择你的png图片,如下图

3、点击选中图层,如下图

4、路径->提取位图轮廓,如下图:

5、出现对话框,共有6中提取轮廓的模式,一般用 Brightness cutoff 或者 Brightness steps,点击右下角的"Update",可以看到效果:

选好你需要的模式,点击确定,关闭"提取位图轮廓"的对话框。

6、此时有两个图层,一个路径图层,一个原图图层。吧路径图层拖至一旁,选中原图图层,按delete删除,然后把路径图层拖回原位置(顶上工具栏 x: 0, y: 0 的位置)

7、文件->另存为,"保存类型"选择"普通的svg(*.svg)",保存到你需要的位置即可。

(如果你会用矢量图工具(比如Illustrator等)设计矢量图的话,你可以不用这么麻烦,直接设计个矢量图就行了。)

(如果你嫌上面的方法复杂,这里有个在线工具 Online
Svg Image Converter
,可以将Png转换为Svg)

8、把svg转为ttf、woff格式。

打开IcoMoon网站,点击左上角的"Import Icons"按钮,选择你上一步制作的svg文件。

这样就导入进来了。然后你只要点右下角"Generate Fonts"就可以下载下来了,下载下来的zip包里面有eot、ttf、svg、woff四种格式的字体。

注意:最好要转换的原图是透明的png格式,而且最好是单色图,因为字体图标是单色的

(如果你嫌上面的方法复杂,这里有个在线工具 Online
Svg Image Converter
,可以将Png转换为Svg)

欢迎加入Sencha Touch + Phonegap 群:194182999

共同学习交流(博主QQ:479858761

时间: 2024-08-03 07:44:10

[Phonegap+Sencha Touch] 移动开发43 WebApp字体图标的制作的相关文章

[Phonegap+Sencha Touch] 移动开发24 打包wp8.1的App,运行时输入框聚焦弹出软键盘之后,界面上移而不恢复原位的解决办法

这个现象只出现在phonegap打包sencha touch的wp8.1程序会出现(仅wp8.1,wp8正常),其它js框架我测试了几个(app framework, jquery mobile),好像没有这个问题. 我来描述一下这个现象: 1.运行phonegap打包的wp8程序,打开一个有输入框的界面,如下图: 2.点击输入框,使其弹出软键盘,界面会上移,如下图: 3.点返回键隐藏软键盘(或者点击界面上其它地方隐藏软键盘),此时界面不恢复原位,如下图: 我的一些研究结果: 1.这种现象只出现

[Phonegap+Sencha Touch] 移动开发19 某些安卓手机上弹出消息框 点击后不消失的解决办法

Ext.Msg.alert等弹出框在某些安卓手机上,点击确定后不消失. 原因是: 消息框点击确定后有一段css3 transform动画,动画完成后才会隐藏(display:none).有些奇葩手机就是不一样. 解决办法就是禁用消息框的动画: 方法一: 在app.js的launch方法里面加上 Ext.Msg.defaultAllowedConfig.showAnimation = false Ext.Msg.defaultAllowedConfig.hideAnimation = false

[Phonegap+Sencha Touch] 移动开发18 Sencha Touch项目通过phonegap打包后的程序名字的问题

之前说过 sencha phonegap init com.pushsoft.myapp MyApp 之后打包的程序安装包apk的名字是"MyApp.apk",显示在手机桌面上的程序名称(图标下面的文字)也是"MyApp" 如果要换成其他名字,修改 MyApp\config.xml 文件,把顶部"<name>MyApp</name>"中间MyApp的改成需要的名字. 注意如果xml内容有中文,要改成utf-8编码,注意是文

[Phonegap+Sencha Touch] 移动开发18 Sencha Touch项目通过phonegap打包后的程序名字的问题

之前说过 sencha phonegap init com.pushsoft.myapp MyApp 之后打包的程序安装包apk的名字是"MyApp.apk",显示在手机桌面上的程序名称(图标以下的文字)也是"MyApp" 假设要换成其它名字,改动 MyApp\config.xml 文件,把顶部"<name>MyApp</name>"中间MyApp的改成须要的名字. 注意假设xml内容有中文,要改成utf-8编码,注意是文

[Phonegap+Sencha Touch] 移动开发30、phonegap的camera插件的几个问题

<span style="font-size:14px;">navigator.camera.getPicture(function(uri){ //得到拍摄的图片路径 }, function(err){}, { quality: 70, allowEdit: true, //拍摄完进行裁剪编辑 targetWidth: 250, targetHeight: 250, destinationType: navigator.camera.DestinationType.FIL

[Phonegap+Sencha Touch] 移动开发23 Android和IOS的webview点击穿透的缓解办法

安卓的webview和自带浏览器下有个奇怪的现象. 现象: 1.如果输入框input或者textarea的正上方(z轴方向,即上层)有个div,当点击这个div使得div隐藏了之后,input会得到焦点,导致软键盘弹出. 2.浏览视图点击某个地方切换到编辑视图,如果浏览视图点击的位置 在 编辑视图相应位置有个输入框,那么切换过去之后,编辑页的输入框会自动得到焦点. 这个体验很不舒服. 讨论: 这个不是点击事件的事件冒泡导致的(因为e.stopPropagation()和return false是

[Phonegap+Sencha Touch] 移动开发29 安卓navigator.camera.getPicture得到图片的真实路径

phonegap的拍照插件选择图库中的图片,代码如下: navigator.camera.getPicture(function(uri){ console.log(uri);//这里得到图片的uri }, function(err){ console.log(err); }, { quality: 70, destinationType: navigator.camera.DestinationType.FILE_URI, sourceType: navigator.camera.Pictur

[Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容

原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cordova-hot-code-push 以下是我对GitHub项目readme的翻译 ---------------------------------------------- Cordova Hot Code Push Plugin 此插件提供了能够使cordova app自己主动更新web内容的功

[Phonegap+Sencha Touch] 移动开发35 让phonegap的webview(安卓)使用chromium内核

应该都知道,phonegap/Cordova(安卓)只是给webapp加了一个壳而已,也就是webapp运行于webview之上. 安卓的webview虽然是webkit内核,但是自带的webview和移动版chrome浏览器的内核还是有区别的.使用过移动版chrome浏览器的人可以明显感觉到性能比自带浏览器(或者webview)要流畅得多. 安卓4.4及以上自带的webview已经是chromium内核了,而4.4以下却不是.所以安卓4.4使用phonegap打包的apk的时候,会感觉比4.4