我有一个长期存在的图像问题(用于地图引脚)我正在使用它随着分辨率越来越高而不断恶化。如果我使用一个图像,可以将它放在可绘制的目录中并指定该图像。找到不同大小和分辨率的作品。但是,我正在动态地从数据库中提取图像名称。因此,将图像放在资源目录中工作正常,但它是所有分辨率的唯一一个图像。现在不太好,因为它们现在在高端手机上太小了。
所以我的目标是从数据库中获取图像名称,然后能够使用可绘制目录并具有不同的大小。似乎这是可能的,但我尝试的一切都失败了。
这可以从资源目录中指定一个图像:
public void run(){
if (!(llat == 0) && !(llon == 0)) {
if (ests == null || ests.size() == 0
|| poisPinpoints.size() == 0) {
ests = DBManager.getEstablishments();
for (Establishment est : ests) {
try {
est_pin_bmp = BitmapFactory.decodeResource(getResources(),R.drawable.mil_pushpin);
poisPinpoints.put(
est.getPoiType().getPushpin(), est_pin_bmp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我从数据库中提取多个图像时使用此代码...但它只是资产目录中的一个尺寸:
public void run(){
if (!(llat == 0) && !(llon == 0)) {
if (ests == null || ests.size() == 0
|| poisPinpoints.size() == 0) {
ests = DBManager.getEstablishments();
for (Establishment est : ests) {
try {
Bitmap bm = BitmapFactory
.decodeStream(PlayPlaces.this
.getAssets().open(
est.getPoiType()
.getPushpin()));
poisPinpoints.put(
est.getPoiType().getPushpin(), bm);
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
你可能想看看这个方法Resources.getIdentifier()
用它可以指定类似的东西:
String resName = est.getPoiType().getPushpin();
int drawId = getResources().getIdentifier(resName , "drawable", getPackageName());
est_pin_bmp = BitmapFactory.decodeResource(getResources(), drawId);