为什么Eclipse Android无法加载某些位图?

时间:2014-03-11 10:58:26

标签: android bitmap

我有一个工作的应用程序,一个简单的蛇游戏。它有效(或者更确切地说,有效)。我想在发布之前清理位图。但是,现在Android已经决定它不能加载3位图,尽管它们存在于文件夹中并且位于Eclipse的资源下。咦??

        src = BitmapFactory.decodeResource(getResources(), R.drawable.snake_crash_down, opts);
        bm_crash_down = Bitmap.createScaledBitmap(src, tileSize, tileSize, true);
        src = BitmapFactory.decodeResource(getResources(), R.drawable.snake_crash_up, opts);
        bm_crash_up = Bitmap.createScaledBitmap(src, tileSize, tileSize, true);
        src = BitmapFactory.decodeResource(getResources(), R.drawable.snake_crash_left, opts);
        bm_crash_left = Bitmap.createScaledBitmap(src, tileSize, tileSize, true);
        src = BitmapFactory.decodeResource(getResources(), R.drawable.snake_crash_right, opts);
        bm_crash_right = Bitmap.createScaledBitmap(src, tileSize, tileSize, true);

这里的第一个位图,crash_down,加载就好了,之前的二十几个位图,但其他三个位图不会加载。 R.drawable.snake_crash_up存在。该文件存在。 Eclipse找到它。 Eclipse可以打开它。但是当我尝试使用BitmapFactory加载它时,Android会返回一个空指针。此应用程序在一小时前工作时此文件未更改!我所做的就是添加其他几个图形。我试过'项目>清洁...'并没有解决它。怎么了?

重命名位图并不起作用。用工作位图(crash_down)替换图形并重命名它们并不起作用。

1 个答案:

答案 0 :(得分:0)

通过将低分辨率副本放在Drawable文件夹中解决了该问题。虽然我在阅读他的帖子之前发现了自己,但是我确实非常正确,虽然'nopdi'似乎没必要(我认为我使用缩放的位图来获得某些屏幕分辨率,而不是其他人。这是一个旧的代码库!)。

对于任何阅读它的人来说,这个答案的主要观点是Android有一种特定的工作方式,你必须理解和遵循。我使用过的hodge-podge解决方案可能会起作用,但随后它可能会随机打破并且没有提供任何关于原因的线索,并且所有感觉和理由都无法追踪错误。如果你发现自己经历了一些有效的事情,请检查你是否正在遵循Droid书中的信件!