拥有多个图片文件资源,例如image01.png,image02.png ....
我已经设置了具有不同区域设置/分辨率/方向限定符的资源文件夹,例如
/res/drawable-en-mdpi-port
/res/drawable-en-mdpi-land
/res/drawable-fr-hdpi-port...........
每个图像文件不同(宽高比/分辨率/区域设置 - 特定图像)
无论如何以编程方式确定应用程序中正在使用哪个实际资源文件? 对我测试在调试日志上发送它会很有用,因此可以确保正在使用正确的图像文件,即我已正确设置资源限定符并将正确的图像放在正确的文件夹中。
可以手动完成,但随着图像数量的增加,这将成为一件大事。
我猜测有关确定资源路径的类似问题,这可能是不可能的。 如果没有,有没有人有任何技巧/提示?我可以在图像中添加ID文本(甚至可以使用脚本用文件名批量水印图像)但是很高兴听到是否有更简单的方法。
答案 0 :(得分:3)
如果您想知道当前(使用当前配置)加载的PNG文件,例如R.drawable.icon
,您可以这样做:
TypedValue returnedValue = new TypedValue();
getResources().openRawResource(R.drawable.icon, returnedValue);
Log.d("Example", "Path to loaded resource: " + returnedValue.string);
在hdpi设备上,输出为:
D/Example ( 2028): Path to loaded resource: res/drawable-hdpi/icon.png
这将为您提供实际资源的路径,与路径的复杂程度无关。它仅适用于.apk中单个文件的资源,最值得注意的是drawables。
答案 1 :(得分:0)
你可以使用它来做它,但它只有在你遵循android文件夹命名约定
时才有效 switch (getResources().getDisplayMetrics().densityDpi) {
case DisplayMetrics.DENSITY_LOW:
//Ldpi
break;
case DisplayMetrics.DENSITY_MEDIUM:
//Mdpi
break;
case DisplayMetrics.DENSITY_HIGH:
//Hdpi
break;
case DisplayMetrics.DENSITY_XHIGH:
//x-hdpi
break;
}
答案 2 :(得分:0)
如果您遵循应用程序中的android文件夹命名约定,通常会自动选择资源文件,否则您可以使用以下API在活动中获得屏幕分辨率,屏幕高度和屏幕宽度等。
ActivityContext.getResources().so on, press ctrl+space in eclipse for help
ActivityContext.getWindow().so on, press ctrl+space in eclipse for help