android判断手机是否支持某种语言

在做app多语言的时候,遇到手机不支持某种语言时,显示空白,或方框里面打叉。

原因是手机系统的字体库不支持该种语言。

解决思路:去检测手机系统是否支持,不支持时,不显示该种语言设置选择。

方法:例如旁遮普语,语言码是pa,定义两个不同的旁遮普语字符串,将两个字符串分别写到两个大小相同的bitmap,再去比较两个bitmap每个像素值是否相同,相同表示不支持,不相同表示支持。因为不支持时,显示空白或连续的方框内打叉,所以像素点相同。

注:

1、字符串不能有空格,符号等语言无关的字符

2、为了保证方框乱码时乱码一样,图片宽度要比字符串长度短。

String str1 = "ਕਿਰਪਾਕਰਕੇਆਪਣਾਫੋਨਨੰਬਰਦਰਜ਼ਕਰੋ";
String str2 = "ਫੋਨਨੰਬਰਨੂੰਸਾਈਨਅੱਪਕੀਤਾਗਿਆਹੈਤੁਸੀਂ";

   /**
     * 判断本机是否支持某语言
     * 将两个字符串写入bitmap,再比较两个bitmap是否相同
     * 支持该语言时,字符串不同,像素值也不同
     * 不支持时,显示空白或乱码(☐☐☐☐☐或方框内打叉),像素值相同
     *
     * 参数不能有空格、符号、数字等其他语言通用的字符
     * @param str1 某语言一段字符串
     * @param str2 某语言一段字符串,与str1不同
     */
    public static boolean isSupportLanguage(String str1, String str2){
        Paint newPaint = new Paint();
        int len1 = (int)newPaint.measureText(str1);
        int len2 = (int)newPaint.measureText(str2);
        int minLen = len1 < len2 ? len1 : len2;
        if(0 >= minLen){
            Log.d(TAG,"The String used for comparison is null!");
            return false;
        }
        Bitmap bitmap1 = Bitmap.createBitmap(minLen,minLen, Bitmap.Config.ARGB_8888);
        Bitmap bitmap2 = Bitmap.createBitmap(minLen,minLen, Bitmap.Config.ARGB_8888);
        Canvas bitmap1Canvas = new Canvas(bitmap1);
        Canvas bitmap2Canvas = new Canvas(bitmap2);
        bitmap1Canvas.drawColor(Color.GRAY);
        bitmap2Canvas.drawColor(Color.GRAY);
        Paint mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setStrokeWidth(1);
        bitmap1Canvas.drawText(str1,0,minLen/2,mPaint);
        bitmap2Canvas.drawText(str2,0,minLen/2,mPaint);
        return !bitmap1.sameAs(bitmap2);
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值