2013-12-12 3 views
0

У меня есть проект андроидной библиотеки, в котором используется ImageButton. Файл изображения находится в файле src/assets/img. Как использовать imageButton.setImageUri() для установки изображения для этой кнопки? Проект библиотеки будет экспортироваться как файл jar, который будет использоваться для другого проекта. Есть идеи?Как найти файлы в проекте андроидной библиотеки

код:

try 
{ 
    // get input stream 
    InputStream ims = mContext.getAssets().open("pause.png"); 
    // load image as Drawable 
    Drawable d = Drawable.createFromStream(ims, null); 
    // set image to ImageView 
    mPauseButton.setImageDrawable(d); 
} 
catch(IOException ex) 
{ 
} 

приведенный выше код в Lib проекта. есть еще один проект под названием ProjectA. projectA передаст свой контекст в mContext для проекта lib.

ответ

0

Вы не можете получить активы из файла jar. Попробуйте написать функцию внутри проекта библиотеки, чтобы получить изображение объектов.

+0

Я не знаю, что путь к файлу, когда банка импортирована в другой проект – David

+0

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

+0

Да, изображение в проекте lib. вы имеете в виду, что у меня есть функция в проекте lib, такая как loadSkin (parentDir), затем я вызываю эту функцию в projectA и передаю текущую apk dir этой функции? если да, каков указанный путь для изображения? – David

0

Попробуйте ввести код.

try 
    { 
     // get input stream 
     InputStream ims = getAssets().open("<Your file name>.<Extension>"); 
     // load image as Drawable 
     Drawable d = Drawable.createFromStream(ims, null); 
     // set image to ImageView 
     mImage.setImageDrawable(d); 
    } 
    catch(IOException ex) 
    { 
     return; 
    } 
+0

Благодарим вас за быстрый ответ. но я получил исключение filenotfound. Я ставлю play.png в project_root/assets. Я вижу этот файл в экспортированной банке. getEssets() в вашем коде означает Context.getAssets()? – David

+0

Если вы пишете этот код под действием, тогда вызывайте его напрямую, в противном случае его нужно вызвать через действительную ссылку на контекст, убедитесь, что вы изменили имя файла внутри .open ("") на ваше имя файла. – Techfist

+0

Я уверен, что имя файла верное. контекст может быть неправильным. Я использую этот файл jar в projectA, поэтому там нет изображения. как я могу использовать контекст проекта lib? – David

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