修改日期时区-区域选项

该博客介绍了如何修改ICU资源文件来实现特定地区时区显示的优化,包括修改`zh.txt`文件以区分不同中文版本,并详细说明了修改后的编译和验证过程。同时,还展示了在Settings中通过逻辑修改,增加台北时区显示的示例代码,涉及`strings.xml`和Java源文件的更新。
摘要由CSDN通过智能技术生成

相关类:TimeZoneSettings

通过修改icu实现

需要修改的资源如:icu4c/source/data/region/zh.txt

zh-CHS 是单纯的简体中文。

zh-CHT 是单纯的繁体中文。

zh-Hans和zh-CHS相同相对应。

zh-Hant和zh-CHT相同相对应。

以上时zh-CHS/zh-Hans 和 zh-CHT/zh-Hant的关系。

zh-CN 简体中文,中华人民共和国

zh-HK 繁体中文,香港特别行政区

zh-MO 繁体中文,澳门特别行政区

-zh-SG 繁体中文,新加坡-

zh-SG 简体中文,新加坡

zh-TW 繁体中文,台湾

这些按照语言+国家进行区分。

修改了alps/external/icu/icu4c/source/data下的文件后

执行路径为source/runConfigureICU文件:执行命令为./runConfigureICU Linux

执行过后出现makefile文件,执行命令 make INCLUDE_UNI_CORE_DATA=1

取alps/external/icu/icu4c/source/data/out/tmp/ xxx.dat文件

放在alps/external/icu/icu4c/source/stubdata

目录下,如:icu4c/source/stubdata/icudt66l.dat执行替换操作,然后remake编译验证。

提交时上传所修改的TXT文件和dat文件。

通过Settings逻辑修改实现

Settings  res/values-zh-rCN/strings.xml  res/values/strings.xml

新增<string name="timezone_taipei">Taipei</string>

src/com/android/settings/datetime/timezone/RegionPreferenceController.java

import com.android.settings.R;

  public CharSequence getSummary() {

        if(mRegionId.equals("TW")){

         return  mContext.getResources().getString(R.string.timezone_taipei);

        }

src/com/android/settings/datetime/timezone/RegionSearchPicker.java

 

   private List<RegionItem> createAdapterItem(Set<String> regionIds) {

        long i = 0;

        String name="";

        for (String regionId : regionIds) {

            if(regionId.equals("TW")){

                name = getString(R.string.timezone_taipei);

            }else{

                name = localeDisplayNames.regionDisplayName(regionId);

            }

//            String name = localeDisplayNames.regionDisplayName(regionId);

src/com/android/settings/datetime/timezone/RegionZonePreferenceController.java

public CharSequence getSummary() {

        String exemplarLocation="";

        if(mTimeZoneInfo!=null){

            if("Asia/Taipei".equals(mTimeZoneInfo.getId())){

                exemplarLocation = mContext.getResources().getString(R.string.timezone_taipei);

            }else if("Asia/Hong_Kong".equals(mTimeZoneInfo.getId())){

                exemplarLocation = mContext.getResources().getString(R.string.timezone_hongkong);

            }else if("Asia/Macau".equals(mTimeZoneInfo.getId())){

                exemplarLocation = mContext.getResources().getString(R.string.timezone_macau);

            }else{

                exemplarLocation = mTimeZoneInfo.getExemplarLocation();

            }

        }

        return mTimeZoneInfo == null ? ""

                : SpannableUtil.getResourcesText(mContext.getResources(),

                        R.string.zone_info_exemplar_location_and_offset,

                exemplarLocation, mTimeZoneInfo.getGmtOffset());

// mTimeZoneInfo.getExemplarLocation(), mTimeZoneInfo.getGmtOffset());

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值