2014-10-13 3 views
0

Привет, ребята, серфинг в Интернете. Я нашел некоторый фрагмент, чтобы загрузить и установить изображение на ImageView на Android. Но, похоже, не работает, потому что не найти ресурс ... Вот мой сниппетКак загрузить и установить изображение в ImageView в Android-приложении?

String user_image_url = "http://www.nuoto.it/foto_news/papera"; 
URL url; 
try { 
    url = new URL(user_image_url); 
    HttpURLConnection conn; 
    try { 
     conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoInput(true); 
     conn.connect(); 
     InputStream is; 
     is = conn.getInputStream(); 
     Bitmap bmImg = BitmapFactory.decodeStream(is); 
    } catch (IOException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 


String uri = "@drawable-hdpi/bg_main.png"; 
int imageResource = getResources().getIdentifier(uri, null, getPackageName()); //Here it give me the error (Resource not found) 

ImageView imageview = (ImageView)v.findViewById(R.id.place_image); 
Drawable res = getResources().getDrawable(imageResource); 
imageview.setImageDrawable(res); 
} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Спасибо большое

LogCat для @Hunkeone:

10-13 16:55:57.926: E/AndroidRuntime(4380): FATAL EXCEPTION: main 
10-13 16:55:57.926: E/AndroidRuntime(4380): Process: com.example.findmyclients, PID: 4380 
10-13 16:55:57.926: E/AndroidRuntime(4380): java.lang.NullPointerException 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at android.content.ContextWrapper.getResources(ContextWrapper.java:94) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.example.findmyclients.BuildInfoMatrix.Read_Matrix(BuildInfoMatrix.java:172) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.example.findmyclients.WindowFeature.show(WindowFeature.java:51) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.example.findmyclients.MainActivity$7.onInfoWindowClick(MainActivity.java:679) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.android.gms.maps.GoogleMap$9.e(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.android.gms.maps.internal.f$a.onTransact(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at android.os.Binder.transact(Binder.java:361) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.android.gms.maps.internal.ai.a(SourceFile:82) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.c.ae.h(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.c.g.b(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.o.bo.aK_(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.o.bo.a(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.o.ca.c(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.o.am.onSingleTapConfirmed(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.i.g.onSingleTapConfirmed(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.google.maps.api.android.lib6.gmm6.i.i.handleMessage(Unknown Source) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at android.os.Handler.dispatchMessage(Handler.java:102) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at android.os.Looper.loop(Looper.java:146) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at android.app.ActivityThread.main(ActivityThread.java:5602) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at java.lang.reflect.Method.invoke(Method.java:515) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
10-13 16:55:57.926: E/AndroidRuntime(4380):  at dalvik.system.NativeStart.main(Native Method) 

ответ

1

Используйте Picasso с квадрата .. Его удивительный

С помощью этого вы можете загружать изображения в изображение с помощью одной строки кода. например

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 
  • Он имеет встроенную поддержку Disk & кэш-памяти (Lrucache), что требуется для более быстрого извлечений изображения в случае просмотров ListView/Грид.
  • Загружается изображения с сервера асинхронно & установить изображение в ImageView по завершении загрузки изображения.
+0

супер библиотека .. Я смотрю об этом –

+0

с библиотекой Пикассо это единственная строка для отображения изображение без манипуляции Picasso.with (this) .load ("http://i.imgur.com/DvpvklR.png") .into ((Target) v.findViewById (R.id.place_image)); –

+0

@ Ахиль так много спасибо !! Я решил с Picasso ^^ Amazing Libraries !! –

1

Путь, который вы указываете на свой строковый uri, должен быть только @drawable/bg_main, но есть простые способы присвоить изображение ImageView. Вместо того чтобы делать:

String uri = "@drawable-hdpi/bg_main.png"; 
int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 
ImageView imageview = (ImageView)v.findViewById(R.id.place_image); 
Drawable res = getResources().getDrawable(imageResource); 
imageview.setImageDrawable(res); 

Вы можете сделать

ImageView imageview = (ImageView)v.findViewById(R.id.place_image); 
imageview.setImageDrawable(R.drawable.bg_main); 

И это все!

+0

Проблема в том, что у меня нет bg_main в моем приложении, но у меня есть входной поток, отформатированный как bmp ... вот вы: –

+0

InputStream; \t \t \t \t \t \t \t is = conn.getInputStream(); \t \t \t \t \t \t \t Растровые bmImg = BitmapFactory.decodeStream (есть); –

+0

Тогда я верю, что @ Hunkeone 's ответ - это то, что вы ищете –

1

После того, как вы получили растровое изображение, используйте рисованное растровое изображение, чтобы установить его в макет.

ImageView imageview = (ImageView)v.findViewById(R.id.place_image); 
imageview.setImageBitmap(bitmap); 
imageview.setAdjustViewBounds(true); 
Drawable drawable= new BitmapDrawable(getResources(),bitmap); 
imageview.setImageDrawable(drawable); 
не

Я хотел бы также рекомендовать, чтобы сделать изображение по умолчанию в случае, если изображение не загружено (подключение нет интернета и т.д.

+0

Я постараюсь, и я прокомментирую результат :) –

+0

Не работает @Hunkeone:/Я публикую в редактировании logcat –

+0

Это означает, что ваш растровый рисунок пуст Bitmap bmImg = BitmapFactory.decodeStream (есть); сделать что-то вроде этой проверки: ImageView imageview = (ImageView) v.findViewById (R.id.place_image); if (bmImg! = Null) { imageview.setImageBitmap (bitmap); imageview.setAdjustViewBounds (true); Drawable drawable = new BitmapDrawable (getResources(), растровое изображение); imageview.setImageDrawable (drawable); } else { imageview.setImageDrawable (R.Layout.yourPicture) } – Hunkeone

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