2010-07-29 245 views
0

我正在编写一个包含ImageView的Android应用程序。要包含在视图中的图像驻留在模拟器的本地应用程序目录中。该图像未在视图中显示。下面给出了用于显示图像的相关XML和方法。Android:无法在ImageView中显示PNG图像

图像文件是一个“PNG”格式的文件,可以从本地应用程序目录打开。 getFilesDir()返回的路径包含完整路径“/data/data/net.vitalrecord.android/files”。此路径名称在开发系统上不存在,但在使用DDMS File Explorer时存在。

任何有关这个问题的帮助是非常感谢。

谢谢。

布局XML:

<AbsoluteLayout> 
...... 

<ImageView 
android:id="@+id/picture" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_x="100px" 
android:layout_y="100px"/> 
</AbsoluteLayout> 

方法: 公共无效checkFilesExists(){

..... 

try { 
Context context = getApplicationContext(); 
FILENAME = getString(R.string.MedicalImage); 
fis = openFileInput(FILENAME); 
int size = fis.available(); 
byte[] buffer = new byte[size]; 
fis.read(buffer); 
fis.close(); 
setContentView(R.layout.medtogoimage); 
    ImageView iv = (ImageView)findViewById(R.id.picture); 
    String imagePath = context.getFilesDir() + "/" + FILENAME; 
    Drawable d = Drawable.createFromPath(imagePath); 
    iv.setImageDrawable(d); 
    medtogo.setbMedicalImageFileExists(true); 
} catch (IOException e) { 
    medtogo.setbMedicalImageFileExists(false); 
} 

回答

2

你应该把图像RES /可绘制文件夹内。然后,您可以获取其对R类的引用,或者将其分配给来自layout xml文件的ImageView。

+0

png图像正在存储在本地应用程序目录中,因为它正在从远程服务器作为流与其他数据元素一起检索。可绘制文件夹是只读文件夹。 但是,谢谢你的建议。 – Roy 2010-07-29 23:12:00

0

您是否尝试将模式设置为MODE_WORLD_READABLE?

+0

不,我没有尝试过“MODE_WORLD_READABLE”。其实,我不希望世界读取图像。 应用程序可以读取图像,如上面提供的代码所示。 我相信问题在于方法“getFilesDir()”。使用调试,它会返回“/data/data/net.vitalrecord.android”的绝对路径。开发系统中不存在这种绝对路径。 但是,当Eclipse Android加载项用于调用DDMS的文件资源管理器时,文件夹/ data/data/...与png图像一起显示。我怀疑本地应用程序文件夹是嵌入在仿真器上下文中。 – Roy 2010-07-30 02:08:10