2015-11-17 48 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

我已经更新了答案 –

相关问题