按Android国家划分的Drawables



我正在将我的应用程序翻译成几种语言,但现在我正在努力解决一个问题!我有几个图像上的文字,有一种方法来提供使用国家代码绘制资源?如果我使用国家代码将drawable添加到应用程序中,是否会增加应用程序的大小?我不想让一个1MB的应用因为这些图片而变成4或5。

谢谢!

等于用res目录values-es values-fr values设置不同的语言…您可以使用以下目录为每个位置设置不同的drawables:

draw_es draw_fr…http://developer.android.com/training/basics/supporting-devices/languages.html

请记住,目录的额外信息具有特殊的重要性,您应该将其放在正确的位置http://developer.android.com/guide/topics/resources/providing-resources.html例如,drawable-es-hdpi

你的apk大小的问题,我想,你不需要设置所有的图像为所有的国家不同,不是吗?通常您只需要配置几个图像

是的,按国家提供资源是可能的。查看这个答案,了解如何做到这一点:本地化和drawables

它肯定会增加你的应用程序的大小。它是,像软件开发中的其他一切,性能(或图像质量)和资源(在这种情况下,apk的大小)之间的妥协。为了避免应用程序的大小呈指数级增长,你可以尝试按地区而不是国家提供资源,或者简单地只提供hdpi版本。

如果你不想用不同的drawables来增加你的apk的大小,你可以编写一个自定义的ImageView,并在上面设置一个字符串(将被翻译)的文本,或者把一个textView放在ImageView的顶部,将它们设置在一个相对的布局中,像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"    
  android:gravity="center"
  android:orientation="vertical"
 >
<ImageView
    android:id="@+id/yImage"
    android:layout_width="fill_parent"
    android:layout_height="25dp"/>  
<TextView
    android:id="@+id/yTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/yImage"
    android:layout_alignLeft="@+id/yImage"
    android:layout_alignRight="@+id/yImage"
    android:layout_alignTop="@+id/yImage"
    android:background="@color/transparent"
    android:lines="2"
    android:textColor="@color/Black"
    android:textSize="14sp"
    android:textStyle="bold" />
</RelativeLayout>

使用框架布局也很容易

最新更新