15 ответов:
URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464"); Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); imageView.setImageBitmap(bmp);
принятый ответ выше отлично подходит, если вы загружаете изображение на основе нажатия кнопки, однако если вы делаете это в новой деятельности, он замораживает пользовательский интерфейс на секунду или две. Оглядываясь вокруг, я обнаружил, что простая задача asynctask устранила эту проблему.
чтобы использовать asynctask для добавления этого класса в конце вашей деятельности:
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = bmImage; } protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0]; Bitmap mIcon11 = null; try { InputStream in = new java.net.URL(urldisplay).openStream(); mIcon11 = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return mIcon11; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } }и вызов из вашего метода onCreate () с помощью:
new DownloadImageTask((ImageView) findViewById(R.id.imageView1)) .execute(MY_URL_STRING);не забудьте добавить разрешения в манифесте файл
<uses-permission android:name="android.permission.INTERNET"/>отлично работает для меня. :)
попробовать
picasssoприятно и заканчивается в одном заявленииPicasso.with(context) .load(ImageURL) .resize(width,height).into(imageView);учебник: https://youtu.be/DxRqxsEPc2s
попробуйте это добавить picasso lib jar file
Picasso.with(context) .load(ImageURL) .resize(width,height).noFade().into(imageView);
import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.ImageView; import android.widget.Toast; public class imageDownload { Bitmap bmImg; void downloadfile(String fileurl,ImageView img) { URL myfileurl =null; try { myfileurl= new URL(fileurl); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn= (HttpURLConnection)myfileurl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); int[] bitmapData =new int[length]; byte[] bitmapData2 =new byte[length]; InputStream is = conn.getInputStream(); BitmapFactory.Options options = new BitmapFactory.Options(); bmImg = BitmapFactory.decodeStream(is,null,options); img.setImageBitmap(bmImg); //dialog.dismiss(); } catch(IOException e) { // TODO Auto-generated catch block e.printStackTrace(); // Toast.makeText(PhotoRating.this, "Connection Problem. Try Again.", Toast.LENGTH_SHORT).show(); } } }в вашей деятельности взять графическое представление и ресурсов imageDownload (url, yourImageview);
UrlImageViewHelper заполнит ImageView с изображением, которое находится на URL. UrlImageViewHelper будет автоматически загружать, сохранять и кэшировать все URL-адреса изображений BitmapDrawables. Повторяющиеся URL-адреса не будут загружены в память дважды. Растровая память управляется с помощью слабой ссылочной хэш-таблицы, поэтому, как только изображение больше не используется вами, оно будет автоматически собираться мусор.
UrlImageViewHelper.setUrlDrawable(imageView, "http://example.com/image.png");
добавить разрешение на доступ в интернет в манифесте
<uses-permission android:name="android.permission.INTERNET" />чем создать methode, как показано ниже,
public static Bitmap getBitmapFromURL(String src) { try { Log.e("src", src); URL url = new URL(src); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); Bitmap myBitmap = BitmapFactory.decodeStream(input); Log.e("Bitmap", "returned"); return myBitmap; } catch (IOException e) { e.printStackTrace(); Log.e("Exception", e.getMessage()); return null; } }Теперь добавьте это в свой метод onCreate,
ImageView img_add = (ImageView) findViewById(R.id.img_add); img_add.setImageBitmap(getBitmapFromURL("http://www.deepanelango.me/wpcontent/uploads/2017/06/noyyal1.jpg"));это работает для меня.
вот пример кода для отображения изображения из URL.
public static Void downloadfile(String fileurl, ImageView img) { Bitmap bmImg = null; URL myfileurl = null; try { myfileurl = new URL(fileurl); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) myfileurl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); if (length > 0) { int[] bitmapData = new int[length]; byte[] bitmapData2 = new byte[length]; InputStream is = conn.getInputStream(); bmImg = BitmapFactory.decodeStream(is); img.setImageBitmap(bmImg); } } catch (IOException e) { e.printStackTrace(); } }
на основе ответ Я пишу свой собственный загрузчик.
С эффектом загрузки и появляются эффект:
import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; import java.io.InputStream; /** * Created by Sergey Shustikov ([email protected]) at 2015. */ public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { public static final int ANIMATION_DURATION = 250; private final ImageView mDestination, mFakeForError; private final String mUrl; private final ProgressBar mProgressBar; private Animation.AnimationListener mOutAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mProgressBar.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }; private Animation.AnimationListener mInAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { if (isBitmapSet) mDestination.setVisibility(View.VISIBLE); else mFakeForError.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } }; private boolean isBitmapSet; public DownloadImageTask(Context context, ImageView destination, String url) { mDestination = destination; mUrl = url; ViewGroup parent = (ViewGroup) destination.getParent(); mFakeForError = new ImageView(context); destination.setVisibility(View.GONE); FrameLayout layout = new FrameLayout(context); mProgressBar = new ProgressBar(context); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER; mProgressBar.setLayoutParams(params); FrameLayout.LayoutParams copy = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); copy.gravity = Gravity.CENTER; copy.width = dpToPx(48); copy.height = dpToPx(48); mFakeForError.setLayoutParams(copy); mFakeForError.setVisibility(View.GONE); mFakeForError.setImageResource(android.R.drawable.ic_menu_close_clear_cancel); layout.addView(mProgressBar); layout.addView(mFakeForError); mProgressBar.setIndeterminate(true); parent.addView(layout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } protected Bitmap doInBackground(String... urls) { String urlDisplay = mUrl; Bitmap bitmap = null; try { InputStream in = new java.net.URL(urlDisplay).openStream(); bitmap = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return bitmap; } protected void onPostExecute(Bitmap result) { AlphaAnimation in = new AlphaAnimation(0f, 1f); AlphaAnimation out = new AlphaAnimation(1f, 0f); in.setDuration(ANIMATION_DURATION * 2); out.setDuration(ANIMATION_DURATION); out.setAnimationListener(mOutAnimationListener); in.setAnimationListener(mInAnimationListener); in.setStartOffset(ANIMATION_DURATION); if (result != null) { mDestination.setImageBitmap(result); isBitmapSet = true; mDestination.startAnimation(in); } else { mFakeForError.startAnimation(in); } mProgressBar.startAnimation(out); } public int dpToPx(int dp) { DisplayMetrics displayMetrics = mDestination.getContext().getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return px; } }добавить разрешения
<uses-permission android:name="android.permission.INTERNET"/>и выполнить :
new DownloadImageTask(context, imageViewToLoad, urlToImage).execute();
лучший метод, который я пробовал вместо использования каких-либо библиотек
public Bitmap getbmpfromURL(String surl){ try { URL url = new URL(surl); HttpURLConnection urlcon = (HttpURLConnection) url.openConnection(); urlcon.setDoInput(true); urlcon.connect(); InputStream in = urlcon.getInputStream(); Bitmap mIcon = BitmapFactory.decodeStream(in); return mIcon; } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); return null; } }
в приведенном ниже коде показано, как установить ImageView из строки url, используя RxAndroid. Во-первых, добавьте библиотеку RxAndroid 2.0
dependencies { // RxAndroid compile 'io.reactivex.rxjava2:rxandroid:2.0.0' compile 'io.reactivex.rxjava2:rxjava:2.0.0' // Utilities compile 'org.apache.commons:commons-lang3:3.5' }теперь используйте setImageFromUrl для установки изображения.
public void setImageFromUrl(final ImageView imageView, final String urlString) { Observable.just(urlString) .filter(new Predicate<String>() { @Override public boolean test(String url) throws Exception { return StringUtils.isNotBlank(url); } }) .map(new Function<String, Drawable>() { @Override public Drawable apply(String s) throws Exception { URL url = null; try { url = new URL(s); return Drawable.createFromStream((InputStream) url.getContent(), "profile"); } catch (final IOException ex) { return null; } } }) .filter(new Predicate<Drawable>() { @Override public boolean test(Drawable drawable) throws Exception { return drawable != null; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Drawable>() { @Override public void accept(Drawable drawable) throws Exception { imageView.setImageDrawable(drawable); } }); }
loadImage("http://relinjose.com/directory/filename.png");держи
void loadImage(String image_location) { URL imageURL = null; if (image_location != null) { try { imageURL = new URL(image_location); HttpURLConnection connection = (HttpURLConnection) imageURL .openConnection(); connection.setDoInput(true); connection.connect(); InputStream inputStream = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream);// Convert to bitmap ivdpfirst.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } else { //set any default } }
попробуйте это:
InputStream input = contentResolver.openInputStream(httpuri); Bitmap b = BitmapFactory.decodeStream(input, null, options);
public class MainActivity extends Activity { Bitmap b; ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView)findViewById(R.id.imageView1); information info = new information(); info.execute(""); } public class information extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... arg0) { try { URL url = new URL("http://10.119.120.10:80/img.jpg"); InputStream is = new BufferedInputStream(url.openStream()); b = BitmapFactory.decodeStream(is); } catch(Exception e){} return null; } @Override protected void onPostExecute(String result) { img.setImageBitmap(b); } } }
Comments