Android系统应用开发(四)系统语言以及添加字体库
2016-09-12 17:46
471 查看
1.如何向android的setting语言列表中添加一门语言
第一种:修改配置文件
位置:build/target/product/languages_full.mk| languages_small.mk,这两个文件里头,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 这样的片段,其实setting中语言选择列表的数据源头就来源于此,既然找到了源头,那只要在之后加上想要的语言即可,比如要加越南语 只要在后面加上 “vi_VN”即可。里面都有PRODUCT_LOCALES :=这样的片段,从命名上也可发现一个full一个small,当不需要更多的语言时候,那languages_small.mk里面的语言就可以满足,而且语言少,生成的image所占用的空间也会相对小些,是根据同目录下full.mk里的注释“Get
a list of languages. We use the small list to save space on smaller devices.”。一个full.mk的文件,这里面有这样的片段:$(call inherit-product, build/target/product/languages_small.mk),后者路径就是我们要设置的地方。好了,改好后,得整个make下,好多模块都是重新编译。
第二种:编码方式修改
Android里一个listview会对应一个数据数组,那只需在这个数组里按格式添加所需要的数据就行了,目标是com.android.settings.LocalePicker.java,在该文件133行位置做如下修改:mLocales = new Loc[finalSize+1];
for (int i = 0; i < finalSize ; i++) {
mLocales = preprocess;
}
Locale temp = new Locale("vi", "VN");
mLocales[finalSize] =new Loc(toTitleCase(temp.getDisplayLanguage(temp)), temp);
2.安卓系统添加字体库
由于项目需要,需要将第三方提供的.ttf字库文件编译至系统源码中,在百度上找了好久,都没有找到想要的,最后还是Google解决了问题,这里作下记录。
(一)首先说怎么把字体库添加到设备
Reference:
http://stackoverflow.com/questions/9627806/android-add-custom-fonts-to-system
其实Reference 中介绍的方法,已经非常简单明了,无需赘述,但这里还是将自己的实践记录一下,顺便备注一下需要注意的地方,方便自己以后查阅学习。
Step1:
Copy custom font .ttf into frameworks/base/data/fonts
很简单,就是copy待添加的 Xxx.ttf 文件到 ../LINUX/Android/frameworks/base/data/fonts 目录下
Step2:
Modify framworks/base/data/fonts/Android.mk ,Add your custom font into list of ‘font_src_files’
修改同目录下的Android.mk文件,将Xxx.ttf文件添加到‘font_src_files ’,具体如下:
相信如果看明白了这段注释,也就该大概知道添加在这里的原因了吧。
致此,就将添加自定义.ttf字库文件到系统的过程走完了。要注意的是,这些步骤仅仅只是将.ttf文件编译进了系统,至于怎么使用,那就是另外一回事了
(二):由于添加到字体库都显示的英文,不知道他是什么字体,下面我们可以改字体库的名称
如何修改字体在系统中显示的名称 ??
Font Creator是一款优秀的国外软件,主要功能是修改、制作字体库。但由于制作中文字库工作量太大,所以通常情况下,个人很少用它来制作字库。 该软件目前有汉化版本推出,大家可以到网上自行搜索。
不少中文字体在系统中显示的名称是英文,有的朋友想把它显示的名称改成中文以方便查找,此时Font Creator就可以派上用场了。 下面以Windows
XP操作系统、Font Creator 5.0英文版为例,简要介绍下如何修改字体在系统中显示的名称。先以英文字体Kabel Medium BT为例。
安装并打开Font Creator,单击“File(文件)—Open(打开)—Installed
Font(已安装的字体)或者Font File(字体文件)”,打开需要修改的字体文件。打开字体文件后,单击“Format(格式)—Naming(命名)”,在Naming(命名)窗口中,字体的相关信息,比如名称、版本、版权等,便呈现在我们面前,此时即可以对这些信息进行任何修改。修改字体在系统中显示的名称,只须修改“Include
font family name(包括完整字体名称)”这一项,完成后单击“OK”,然后保存即可。关于Naming窗口中各项信息与Windows系统的字体查看器窗口中显示的信息之间的对应关系,见
图:
注意:改过后,重新替换frameworks\base\data\fonts下的字体库,把改过名字的放进去,重现编译:
在frameworks/base/data/fonts$ 单编,执行mm,然后push就OK了!
参考文章(一):http://blog.csdn.net/CrystalDestiny/article/details/50986888
参考文章(二):http://blog.csdn.net/wwwsq/article/details/8207762
参考文章(三):http://wenku.baidu.com/link?url=gPsk5zNHpejStHf3hjgwGKYlnwEOviA2UH4WvOfiVPv9BYAJlY7P9MYem0Z1VFrq1nmEISt6559XU-YVF1aAJXWrV_ZMGypw4sjaehswKRW
3,在Z:\myandroid\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java里面添加
4,把之前改的都在源码里面编译,然后push到设备,
验证方法有2种:
(一),然设备重置(这一步不能少),等重置完成,开机,查看data\data\com.android.priovider.settings\date***\settings.db这个数据库,你可以从设备上pull下来用工具查看,如果熟悉数据库命令也可以直接使用命令查看这个字段
(二)进入shell,删除data/tata/com.android.providers.settings/databases/settings.db 然后reboot,重启后重新生成settings.db查看即可
5,添加完后,在代码里面使用,
获取值的方法:Settings.System.getInt(getActivity().getContentResolver(), Settings.System.UPDATA_MODE,2);
设置值的方法,Settings.System.putInt
第一种:修改配置文件
位置:build/target/product/languages_full.mk| languages_small.mk,这两个文件里头,有PRODUCT_LOCALES := en_US en_GB fr_FR it_IT es_ES es_US 这样的片段,其实setting中语言选择列表的数据源头就来源于此,既然找到了源头,那只要在之后加上想要的语言即可,比如要加越南语 只要在后面加上 “vi_VN”即可。里面都有PRODUCT_LOCALES :=这样的片段,从命名上也可发现一个full一个small,当不需要更多的语言时候,那languages_small.mk里面的语言就可以满足,而且语言少,生成的image所占用的空间也会相对小些,是根据同目录下full.mk里的注释“Get
a list of languages. We use the small list to save space on smaller devices.”。一个full.mk的文件,这里面有这样的片段:$(call inherit-product, build/target/product/languages_small.mk),后者路径就是我们要设置的地方。好了,改好后,得整个make下,好多模块都是重新编译。
第二种:编码方式修改
Android里一个listview会对应一个数据数组,那只需在这个数组里按格式添加所需要的数据就行了,目标是com.android.settings.LocalePicker.java,在该文件133行位置做如下修改:mLocales = new Loc[finalSize+1];
for (int i = 0; i < finalSize ; i++) {
mLocales = preprocess;
}
Locale temp = new Locale("vi", "VN");
mLocales[finalSize] =new Loc(toTitleCase(temp.getDisplayLanguage(temp)), temp);
2.安卓系统添加字体库
由于项目需要,需要将第三方提供的.ttf字库文件编译至系统源码中,在百度上找了好久,都没有找到想要的,最后还是Google解决了问题,这里作下记录。
(一)首先说怎么把字体库添加到设备
Reference:
http://stackoverflow.com/questions/9627806/android-add-custom-fonts-to-system
其实Reference 中介绍的方法,已经非常简单明了,无需赘述,但这里还是将自己的实践记录一下,顺便备注一下需要注意的地方,方便自己以后查阅学习。
Step1:
Copy custom font .ttf into frameworks/base/data/fonts
很简单,就是copy待添加的 Xxx.ttf 文件到 ../LINUX/Android/frameworks/base/data/fonts 目录下
Step2:
Modify framworks/base/data/fonts/Android.mk ,Add your custom font into list of ‘font_src_files’
修改同目录下的Android.mk文件,将Xxx.ttf文件添加到‘font_src_files ’,具体如下:
font_src_files := \ Roboto-Regular.ttf \ …. AndroidClock_Solid.ttf \ Xxx.ttf \这里要注意的是,‘font_src_files’在Android.mk文件中有多处定义,要注意比对,不要找错位置,一般在上面那段代码上面会有一段如下的注释:
# Build the rest of font files as prebuilt. # $(1): The source file name in LOCAL_PATH. # It also serves as the module name and the dest file name.
相信如果看明白了这段注释,也就该大概知道添加在这里的原因了吧。
Step3: Modify frameworks/base/data/fonts/fonts.mk ,Add your custom font into list of PRODUCT_PACKAGES修改同目录下的fonts.mk文件,在PRODUCT_PACKAGES末尾添加Xxx.ttf文件,如下:
PRODUCT_PACKAGES := \ DroidSansFallback.ttf \ … AndroidClock_Solid.ttf \ Xxx.ttf \
Step4: 在frameworks/base/data/fonts$ 单编,执行mm
Step5: Check 是否成功 Rebuild 之后,如果编译成功,在out/target/product/msm8610/system/fonts 会有Xxx.ttf文件,反之则可能并未成功。 注意:/product 下的/msm8610 这个目录跟平台有关,不同的平台会是不同的目录,例如有可能是 out/target/product/generic/system/fonts 等。
Step6:检查out/target/product/msm8610/system/fonts 有Xxx.ttf文件,push到设备,在设备上查看即可
致此,就将添加自定义.ttf字库文件到系统的过程走完了。要注意的是,这些步骤仅仅只是将.ttf文件编译进了系统,至于怎么使用,那就是另外一回事了
(二):由于添加到字体库都显示的英文,不知道他是什么字体,下面我们可以改字体库的名称
如何修改字体在系统中显示的名称 ??
Font Creator是一款优秀的国外软件,主要功能是修改、制作字体库。但由于制作中文字库工作量太大,所以通常情况下,个人很少用它来制作字库。 该软件目前有汉化版本推出,大家可以到网上自行搜索。
不少中文字体在系统中显示的名称是英文,有的朋友想把它显示的名称改成中文以方便查找,此时Font Creator就可以派上用场了。 下面以Windows
XP操作系统、Font Creator 5.0英文版为例,简要介绍下如何修改字体在系统中显示的名称。先以英文字体Kabel Medium BT为例。
安装并打开Font Creator,单击“File(文件)—Open(打开)—Installed
Font(已安装的字体)或者Font File(字体文件)”,打开需要修改的字体文件。打开字体文件后,单击“Format(格式)—Naming(命名)”,在Naming(命名)窗口中,字体的相关信息,比如名称、版本、版权等,便呈现在我们面前,此时即可以对这些信息进行任何修改。修改字体在系统中显示的名称,只须修改“Include
font family name(包括完整字体名称)”这一项,完成后单击“OK”,然后保存即可。关于Naming窗口中各项信息与Windows系统的字体查看器窗口中显示的信息之间的对应关系,见
图:
注意:改过后,重新替换frameworks\base\data\fonts下的字体库,把改过名字的放进去,重现编译:
在frameworks/base/data/fonts$ 单编,执行mm,然后push就OK了!
参考文章(一):http://blog.csdn.net/CrystalDestiny/article/details/50986888
参考文章(二):http://blog.csdn.net/wwwsq/article/details/8207762
参考文章(三):http://wenku.baidu.com/link?url=gPsk5zNHpejStHf3hjgwGKYlnwEOviA2UH4WvOfiVPv9BYAJlY7P9MYem0Z1VFrq1nmEISt6559XU-YVF1aAJXWrV_ZMGypw4sjaehswKRW
3,在Z:\myandroid\frameworks\base\packages\SettingsProvider\src\com\android\providers\settings\DatabaseHelper.java里面添加
4,把之前改的都在源码里面编译,然后push到设备,
验证方法有2种:
(一),然设备重置(这一步不能少),等重置完成,开机,查看data\data\com.android.priovider.settings\date***\settings.db这个数据库,你可以从设备上pull下来用工具查看,如果熟悉数据库命令也可以直接使用命令查看这个字段
(二)进入shell,删除data/tata/com.android.providers.settings/databases/settings.db 然后reboot,重启后重新生成settings.db查看即可
5,添加完后,在代码里面使用,
获取值的方法:Settings.System.getInt(getActivity().getContentResolver(), Settings.System.UPDATA_MODE,2);
设置值的方法,Settings.System.putInt
相关文章推荐
- Android 开发之系统应用Launcher详解,简单添加和删除快捷方式及常见问题
- Android系统应用开发(二)有条件的获取所有app以及自定义
- 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!
- 做Android 系统/应用开发怎么可以不懂自动化测试
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- Android应用开发——系统自带样式Android:theme
- 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!
- Android系统开发小知识-在android产品开发中添加新的编译模块
- Android应用开发——系统自带样式Android:theme
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法 推荐
- 做Android 系统/应用开发怎么可以不懂自动化测试
- 【Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)! 推荐
- Android应用开发——系统自带样式Android:theme
- Android应用开发——系统自带样式Android:theme
- Windows系统部署 Android 开发环境以及验证之傻瓜式教程(SDK+Eclipse+ADT)
- 做Android 系统/应用开发怎么可以不懂自动化测试
- Android综合下载系统的开发步骤以及遇到问题
- 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!
- 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPool的利弊以及各个在游戏中的用途!
- Android应用开发——系统自带样式Android:theme