2015-11-17 1 views
0

Я использую для установки фоновых изображений на виды из моих чертежей. Что делать, если я хочу установить фон из файла?Как преобразовать объект-файл в drawable

В этом коде я просматриваю каталог файлов, и я намерен добавить первый файл изображения, который я нахожу в качестве фона. Должен ли я сначала преобразовать файл изображения в чертеж? Имеет ли значение расширение файла?

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

Я обновил ответ –

Смежные вопросы