Я хочу загрузить изображение из url в imageview в С# (android) после поиска в google, я не могу найти хороший результат, спасибо за помощь p >
Я использую студию xamarin
Я хочу загрузить изображение из url в imageview в С# (android) после поиска в google, я не могу найти хороший результат, спасибо за помощь p >
Я использую студию xamarin
Самый первый хит, который я получил от Google, - это thread на форумах Xamarin, обсуждающих эту точную проблему:
private Bitmap GetImageBitmapFromUrl(string url)
{
Bitmap imageBitmap = null;
using (var webClient = new WebClient())
{
var imageBytes = webClient.DownloadData(url);
if (imageBytes != null && imageBytes.Length > 0)
{
imageBitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
}
}
return imageBitmap;
}
var imageBitmap = GetImageBitmapFromUrl("http://xamarin.com/resources/design/home/devices.png");
imagen.SetImageBitmap(imageBitmap);
Оба подхода работают, но это хорошая практика, чтобы сделать это асинхронно. Здесь у вас есть несколько хороших примеров:
Использую ниже класс в Xamarin Android:
public class DownloadImageTask : AsyncTask
{
private ImageView bmImage;
private ProgressBar progressBar;
public DownloadImageTask( ImageView bmImage , ProgressBar progressBar)
{
this.bmImage = bmImage;
this.progressBar = progressBar;
}
protected override void OnPostExecute( Object result )
{
base.OnPostExecute(result);
bmImage.SetImageBitmap(( Bitmap ) result);
if (progressBar != null)
progressBar.Visibility = ViewStates.Gone;
}
protected override Object DoInBackground( params Object[] @params )
{
var urldisplay = @params[0].ToString();
Bitmap mIcon11 = null;
try
{
var req = WebRequest.Create(urldisplay);
var response = req.GetResponse();
var stream = response.GetResponseStream();
mIcon11 = BitmapFactory.DecodeStream(stream);
}
catch ( Exception e )
{
}
return mIcon11;
}
}
Исполнение:
new DownloadImageTask(imgProfile , progressBar).Execute(uri);