2010-07-29 331 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