Черный экран при загрузке веб-изображения на Android

63
2

При загрузке изображения из Интернета я получаю черный экран.

Я взял страницу из Интернета, превратив ее в холст, а затем установил в ImageView.

Теперь, когда я загружаю его, я получаю черный экран на изображении.

Код мероприятия:

public class ImageActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ImageView i = (ImageView) findViewById(R.id.imageView1);

try {
String url = "http://www.rotoworld.com/images/headshots/NBA/1372.jpg";
Drawable image = ImageOperations(this, url);
i.setImageDrawable(image);
} catch (Exception ex) {
ex.printStackTrace();
}
i.setMinimumWidth(22);
i.setMinimumHeight(22);

i.setMaxWidth(22);
i.setMaxHeight(22);

}

private Drawable ImageOperations(Context ctx, String url) {
try {
InputStream is = (InputStream) this.fetch(url);
Drawable d = Drawable.createFromStream(is, "src");
return d;
} catch (MalformedURLException e) {
return null;
} catch (IOException e) {
return null;
}
}

public Object fetch(String address) throws MalformedURLException, IOException {

URL url = new URL(address);
Object content = url.getContent();
return content;
}

}

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />

спросил(а) 2021-01-19T18:07:00+03:00 6 месяцев, 1 неделя назад
1
Решение
90

Попробуйте это... это может быть полезно для вас

 public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView imageView= (ImageView)findViewById(R.id.imageView1);
new loadImageTask().execute("http://www.rotoworld.com/images/headshots/NBA/1372.jpg");
}

public static Drawable LoadImageFromWeb(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "");
return d;

}
catch (Exception e)
{
return null;
}

}

public class loadImageTask extends AsyncTask<String, Void, Void>
{

Drawable imgLoad;

@Override
protected void onPreExecute()
{
super.onPreExecute();
}

@Override
protected Void doInBackground(String... params)
{
imgLoad = LoadImageFromWeb(params[0]);

return null;
}

@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
imageView.setVisibility(View.VISIBLE);

}

}

ответил(а) 2021-01-19T18:07:00+03:00 6 месяцев, 1 неделя назад
45

Вот как это было в конце...

Нужно использовать Asynctask. Я также нахожу html на веб-странице, чтобы получить фактический jpg из Интернета.

String namesTr1 = pb;
System.out.println(">>>>NAMEBEFORE"+pb);
String nameminus1 = namesTr1.replace(' ','-' );
System.out.println(">>>>NAMEAFTERREPLACe"+nameminus1);
PGCalc pgcalc = new PGCalc();
String playerhtml="http://www.rotoworld.com/player/nba/1860/"+nameminus1+"/1";
System.out.println(">>>>Before JSOUP"+playerhtml);

//Getting html image from Jspoup
try {
imagehtml = pgcalc.getimage(playerhtml);
System.out.println(">>>>>>jsoupimagehtml"+imagehtml);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//Setting image in Imageview
try
{
URL feedImage = new URL(imagehtml);
HttpURLConnection conn= (HttpURLConnection)feedImage.openConnection();
InputStream is = conn.getInputStream();
Bitmap img;
return img = BitmapFactory.decodeStream(is);
//imageview1.setImageBitmap(img);

}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}

ответил(а) 2021-01-19T18:07:00+03:00 6 месяцев, 1 неделя назад
45

Обычная причина получения черного экрана при открытии активности в android заключается в том, что для создания активности требуется много времени.

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

ответил(а) 2021-01-19T18:07:00+03:00 6 месяцев, 1 неделя назад
45

Попробуй это...

try 
{
URL feedImage = new URL(imageUrl);
HttpURLConnection conn= (HttpURLConnection)feedImage.openConnection();
InputStream is = conn.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is);
i.setImageBitmap(img);

}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}

ответил(а) 2021-01-19T18:07:00+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема