我是开发人员的应用程序,其中包含更多图像(约3000个),文件名中包含空格,如:
我是一个image.jpg
对Android不熟悉,我现在才发现,名字中有空格或大写字母的资源不接受这个,这是一个非常大的问题!
我在iOS应用程序中使用相同的图像(没有问题),现在几乎不可能更改所有名称。
有一种方法可以在不重命名图像的情况下解决这个问题吗?
如果没有,有没有办法快速重命名3000张图片?
非常感谢
答案 0 :(得分:4)
有一种方法可以在不重命名图像的情况下解决这个问题吗?
不。 Res文件不能包含空格。
答案 1 :(得分:0)
您可以将它们放在assets文件夹中并在那里使用它们,但是您必须将每个图像作为位图,而不必使用R.drawable.image_name表示法。
我使用这种方法:
public static Bitmap getFoodImage(Context context, String foodType){
InputStream bitmap = null;
Bitmap bit = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
try {
bitmap = context.getAssets().open(foodType.toUpperCase() + ".png");
if(bitmap != null){
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int sWidth = metrics.widthPixels;
options.inJustDecodeBounds = true;
Bitmap dBit = BitmapFactory.decodeStream(bitmap, null, options);
int intrinsicHeight = options.outHeight;
int intrinsicWidth = options.outWidth;
//int height = (int) (intrinsicWidth * proportion);
int nHeight = (int) (intrinsicHeight/1.3);
try {
bitmap.reset();
} catch (IOException e) {
Log.e("SGNAM", e.getMessage());
}
options.inJustDecodeBounds = false;
dBit = BitmapFactory.decodeStream(bitmap, null, options);
Bitmap bP = Bitmap.createBitmap(dBit, 0, 0, intrinsicWidth, nHeight);
if(sWidth < intrinsicWidth){
bit = Bitmap.createScaledBitmap(bP, intrinsicWidth, intrinsicHeight, false);
}
else{
bit = Bitmap.createScaledBitmap(bP, sWidth, intrinsicHeight, false);
}
bitmap.close();
dBit = null;
bP = null;
}
} catch (IOException e) {
e.printStackTrace();
}
return bit;
}
正如您所看到的,我的所有图像名称都是大写的,但如果不需要,您可以跳过该部分(对于png也是如此)。
如果您使用的是onCreate方法,并且所需的图像称为An image.png(请记住,在此示例中,方法添加了.png):
Context context = this;
Bitmap myBitmap = getFoodImage(context, An image);
您可以通过以下方式将此位图设置为imageView的资源:
ImageView myImageView = findViewById(R.id.imageView);
myImageView.setImageBitmap(myBitmap);
这应该是他的伎俩。