从网络上加载图片时,我会看到黑屏。
我从网页中取出页面,将其转换为画布,然后将其设置为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" />
答案 0 :(得分:0)
试试这个......
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();
}
答案 1 :(得分:0)
在Android中打开活动时获得黑屏的常见原因是创建活动需要很长时间。
我认为你应该把你的图像提取到AsyncTask或类似的。
答案 2 :(得分:0)
试试这个..这对你有帮助
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);
}
}
答案 3 :(得分:0)
这是最后的结果......
需要使用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;
}