您的位置:首页 > 移动开发 > Android开发

[置顶] Arcgis for Android 中文乱码只因没有再尝试一步

2017-06-11 21:56 169 查看

现象

使用Arcgis for Android SDK 开发地图应用时,难免会显示中文,但是当我们把中文显示在地图时,部分手机显示正常,部分手机直接就什么都没有显示,还有一部分显示乱码。

原因

导致乱码的原因部分博客分析一此手机不支持中文字体,当然这没有错,如果 Android 不支持中文字体那系统的中文怎么显示出来的。
Arcgis
使用了 OpenGL 进行绘图,在使用
TextSymbol
进行显示文字提供了设置字体的方法,但设置了系统已经有的中文字体就可以显示出来了,那么说明和字体是相关的。

解决办法

方法 1

使用图片代替文字显示

此方法请查看http://blog.csdn.net/u013758734/article/details/41702025

当显示过多内容势必占用内存,所以不太推荐使用此办法。好在我发现第二种办法,不然或许只能用这个办法了。

方法 2 ( 推荐 )

从原因出发

因为 Arcgis 在画
TextSymbol
时没有中文字体,或使用的默认字体不支持中文,所以才导致了这样的问题,我们不能期望Arcgis做些什么,也不能让Android系统在每个终端中加入指定字体。只能自己带个中文字体了。

其它博客写到在使用TextSymbol时使用setFontFamily()设置以下两种字体,因为这两个是支持中文显示的。

String fontFamily = "DroidSansFallback.ttf";
if(Build.VERSION.SDK_INT >= 21){
fontFamily = "NotoSansHans-Regular.otf";
}


正因为不能保证所有系统都有下面的字体,那么这个问题还是不能得到解决。

废话不多说放大招:

下载
DroidSansFallback.ttf"
字体【单击下载

复制下载字体至内存卡

使用下面的子类进行字体显示(注意字体在内存卡的路径)

import com.esri.core.symbol.TextSymbol;

import org.codehaus.jackson.JsonNode;

import java.io.File;

/**
* Created by canney on 2017/6/11.
*/
public class MyTextSymbol extends TextSymbol {

private static final long serialVersionUID = 357217592429086811L;

public MyTextSymbol(int size, String text, int color, HorizontalAlignment halign, VerticalAlignment valign) {
super(size, text, color, halign, valign);
fixedNotSupportChineseBug();
}

public MyTextSymbol(int size, String text, int color) {
super(size, text, color);
fixedNotSupportChineseBug();
}

public MyTextSymbol(JsonNode node) {
super(node);
fixedNotSupportChineseBug();
}

public MyTextSymbol(String fontFamily, String text, int color) {
super(fontFamily, text, color);
fixedNotSupportChineseBug();
}

public MyTextSymbol(TextSymbol textSymbol) {
super(textSymbol);
fixedNotSupportChineseBug();
}

/**
* 解决中文乱码问题
*/
private void fixedNotSupportChineseBug() {

//字体在内存卡的路径
String fontFamilyPath = "DroidSansFallback.ttf";
String fontFamily = new File(Environment.getExternalStorageDirectory(), fontFamilyPath).getPath();

setFontFamily(fontFamily);
}

}


参考:

http://www.cnblogs.com/gis-luq/p/4833361.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: