2015-11-17 90 views
0

我習慣於將背景圖像設置爲可繪製的視圖。我該怎麼做如果我想從文件設置背景?如何將文件對象轉換爲可繪製的圖像

在這段代碼中,我正在掃描一個文件目錄,並且打算添加我發現的第一個圖像文件作爲背景。我應該首先將圖像文件轉換爲可繪製的文件嗎?文件擴展名是否重要?

File mFile = new File(stringPath); 
File[] mFiles = mFile.listFiles(); 

for(File aFile : mFiles){ 

    // Test if aFile is a .jpg or a .png and convert to drawable? 

    } 
+0

使用BitmapDrawable與BitmapFactory – njzk2

回答

1

你可以試試這個:

public static Drawable foo(String stringPath) { 
    File mFile = new File(stringPath); 
    File[] mFiles = mFile.listFiles(); 

    for (File aFile : mFiles) { 
     if (isImage(aFile)) { 
      return Drawable.createFromPath(aFile.getPath()); 
     } 
    } 
    return mPlaceholder; 
} 


public static boolean isImage(File file) { 
    if (file == null || !file.exists()) { 
     return false; 
    } 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(file.getPath(), options); 
    return options.outWidth != -1 && options.outHeight != -1; 
} 

或者你可以用另外一種方式:

public static Bitmap foo(String stringPath) { 
    File mFile = new File(stringPath); 
    File[] mFiles = mFile.listFiles(); 

    for (File aFile : mFiles) { 

     BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
     bmOptions.inJustDecodeBounds = true; 
     Bitmap bitmap = BitmapFactory.decodeFile(aFile.getAbsolutePath(),bmOptions); 
     if(bmOptions.outWidth != -1 && bmOptions.outHeight != -1){ 
      return bitmap; 
     } 

    } 
    return mPlaceholder; 
} 


public static void bar(View view, String stringPath) { 
    Bitmap bitmap = foo(stringPath); 
    BitmapDrawable drawable = new BitmapDrawable(view.getContext().getResources(), bitmap); 
    view.setBackground(drawable); 
} 
+0

謝謝,但不要我要檢查是否' aFile'是第一個圖像文件? –

+0

我想我會不得不使用像[這個](http://stackoverflow.com/questions/13760269/android-how-to-check-if-file-is-image) –

+0

我已經更新了答案 –

相關問題