Как я могу получить путь к изображению, которое я загрузил для оценки или рисования в Android? - PullRequest
1 голос
/ 19 апреля 2011


Я новичок в Android не знаю много об этом. Я импортировал изображение в свой проект, и когда я попробовал его, проверьте его, используя Файл, существует файл или нет.

Это код, который я использовал ..

 existingFileName="res/drawable-ldpi/login.png";  
 File f= new File(existingFileName);  
      //  Log.d("Image path",);  
        if(f.exists())  
        {  
            Log.d("EXISTS", "====File Exists===");  
        }

Все еще показывает, что изображения не существует.

спасибо за помощь заранее, абы

Ответы [ 6 ]

8 голосов
/ 19 апреля 2011

Если вы помещаете свои изображения в папку для рисования, я не думаю, что вы можете получить к ним доступ таким образом Попробуйте это

Drawable image= getResources().getDrawable(R.drawable.<id>); 

id будет вашим именем файла.

4 голосов
/ 22 апреля 2011

Если вы сохраняете изображение в папке «res / drawable», вы можете сделать:

Drawable drawable = getResources().getDrawable(R.drawable.name)

См. http://developer.android.com/reference/android/content/res/Resources.html#getDrawable

Для случая, когда вы сохраняете ваше изображение в папке активов, вам нужно использовать getAssets() (http://developer.android.com/reference/android/content/Context.html#getAssets())

Вы можете сделать что-то вроде этого:

InputStream is = getAssets().open(imageName);
BufferedInputStream buf = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(buf);

Помните, что для обоих случаев вам нужно иметь Context (т.е. Activity)

2 голосов
/ 23 апреля 2011

Существует no need to check существование файла актива до того, как вы его прочитаете.AssetManager takes care of it.Если файл отсутствует, он генерирует исключение.Ваша практика кодирования должна заключаться в том, чтобы всегда заключать эту часть кода в try catch и разбивать логику.Дополнительный код не нужен.Если вы попытаетесь открыть файл, который не существует, вы получите исключение.

Хотя, если вы все еще хотите выполнить эту ручную работу, попробуйте следующий код:

AssetManager mg = getResources().getAssets();

try {

  //do all considering file exists 
     mg.open(pathInAssets);
} catch (IOException ex) {
  //do all in case file is missing
}

ЕслиВаш файл находится в assets / folder / file.ext, тогда pathInAssets будет "folder/file.ext"

Проверить наличие файла в папке активов androids?

Как проверить ресурс Android-актива?

1 голос
/ 28 апреля 2011

Если вы получаете эту ошибку .. "Невозможно сделать static ссылку на метод non-static getResources() из типа ContextWrapper"

Попробуйте Drawable image=Classname.this.getResources().getDrawable(R.drawable.<id>); здесь Classname.this означаетClassContext / Application Context.

1 голос
/ 24 апреля 2011

Используйте перспективу DDMS в eclipse, чтобы найти изображение на эмуляторе, на котором работает ваше приложение.

1 голос
/ 24 апреля 2011

Обычно, если вы используете res / drawable, ваш идентификатор ресурса компилируется в файл R.java.Поэтому, если вы используете идентификатор оттуда, вы можете быть уверены, что файл находится там, иначе вы не сможете скомпилировать свой проект.

Если вы хотите позже обменять R.java и действительно хотите перечислить ресурсы в res / drawable, вы можете сделать это с помощью java Reflection, изучив класс R следующим образом:

    Class<?> c=R.drawable.class;
    Field[] fs=c.getFields();
    for(Field f: fs)
        Log.v("test", f.getName());

После этого вы получите список ресурсов без расширения файла.Идентификатор ресурса (целое число) для каждого ресурса затем читается с int id=f.getInt(null);.

...