2012-02-02 65 views
0

从网络加载图像时出现黑屏。将Web图像加载到Android时出现黑色屏幕

我把网页从网页上转到一个画布,然后将其设置为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

通常的原因打开的时候得到一个黑色的屏幕活动中和roid是需要很长时间来创建活动。

我认为你应该把你的图像取入AsyncTask或类似的东西。

+0

谢谢!从来没有听说过AsyncTask。那里有好的例子吗? – user1163234 2012-02-02 09:25:46

+0

@ user1163234文档通常很不错。 [AsyncTask]的文档(http://developer.android.com/reference/android/os/AsyncTask.html)包含了一个关于如何使用它的例子。 – tidbeck 2012-02-02 09:42:09

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(); 
      } 
+0

感谢您的快速响应!没有工作我收到默认设置的图标。我将XML添加到我的问题谢谢你的时间! – user1163234 2012-02-02 08:15:13

0

尝试this..it可能有助于您

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); 

       } 

      } 
+0

谢谢KKC!尝试运行并得到“E/AndroidRuntime(855):java.lang.RuntimeException:无法实例化活动ComponentInfo {com.image/com.image.ImageActivity}:java.lang.NullPointerException” – user1163234 2012-02-02 10:57:50

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; 
}