如何访问Android图像资源(Eclipse)
我正在为Android编写一个纸牌游戏,所以我有40张不同密度的纸牌图像,分布在res/drawable ldpi、hdpi、mdpi和xhdpi中 我已经在我的卡片类的成员中定义了一个Rect区域,在这里我将为每张卡片打印不同的图像。代码是:如何访问Android图像资源(Eclipse),android,android-resources,Android,Android Resources,我正在为Android编写一个纸牌游戏,所以我有40张不同密度的纸牌图像,分布在res/drawable ldpi、hdpi、mdpi和xhdpi中 我已经在我的卡片类的成员中定义了一个Rect区域,在这里我将为每张卡片打印不同的图像。代码是: package Maze; import android.R; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics
package Maze;
import android.R;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
public class Card {
private CardNumber number;
private CardSuit suit;
private Rect region;
private boolean visible;
private Bitmap bitmap;
private Bitmap backsideImg;
public Card(CardNumber number, CardSuit suit){
this.number = number;
this.suit = suit;
this.visible = false;
region = new Rect();
setBitmap();
}
private void setBitmap(){
backsideImg = BitmapFactory.decodeFile(R.drawable.reverse);
if(suit==CardSuit.HEARTS){
switch(number){
case ONE:
bitmap = BitmapFactory.decodeFile(R.drawable.onehearts); // For onehearts.png file
break;
case TWO:
bitmap = BitmapFactory.decodeFile(R.drawable.twohearts); // For twohearts.png file
break;
case THREE:
bitmap = BitmapFactory.decodeFile(R.drawable.threehearts);
break;
case CUATRO:
bitmap = BitmapFactory.decodeFile(R.drawable.fourhearts);
break;
// And so on...
}
}
}
public void draw(Canvas c, int x, int y){
region.left = x;
region.top = y;
region.right = x + 80;
region.bottom = y + 115;
if(visible) c.drawBitmap(bitmap, x, y, null);
else c.drawBitmap(backsideImg, x, y, null);
}
}
但它没有找到资源。例如,它说“1心脏无法解决或不是一个字段”。我想我错过了一些步骤,我只是将图像拖放到资源文件夹中
我遗漏了什么?重命名文件名,以字母开头。自动生成的
R.drawable
字段的名称与文件名相同,但必须是有效的Java标识符
编辑:
此外,请检查您是否包含正确的R
类。您可能希望使用Card.java
的完整内容更新您的问题,而不仅仅是类代码
编辑2:
正如我所怀疑的,您正在导入
android.R
,这是系统资源类。您应该使用从资源生成的R
类。给定您的包名,我希望它是Maze.R
您需要使用decode资源,而不是decode文件
比如:
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.oneOfHearts);
好的,我会这样做,但不管怎样,我有像kingharts.png这样的文件,它们命名正确,并且给出了相同的错误。所以我肯定错过了其他的东西…好了,完成了。如你所见,我正在导入android.R。是吗?有什么区别?什么是getResources()方法?我刚刚意识到你是在卡片类而不是活动中创建位图的。getResources()是上下文的静态成员。