2012-10-17 42 views
0

我从一个在线xml文件中解析了几项天气数据。其中一个节点是我想要显示的图像的URL。我设法解析它并将其保存为字符串变量,并以字符串形式显示在应用程序中。我如何让它显示图像而不是文本? 在此先感谢!解析图片URL Android

回答

1

首先,您需要下载图像并将其存储在Bitmap对象中。

然后,用ImageView显示它。

This answer describes how you can do it in some detail

+1

虽然添加了所有推荐的导入,但我得到了一些'无法解决'错误的错误 - 我错过了一些明显的东西,或者代码已过时?谢谢 – codegirl

+0

使用异步任务下载图像。在doInBackground()和postExecute()中下载相应的ui。使它更有效率。 – Raghunandan

+0

我是Android开发新手 - 有什么好的教程可以推荐你这样做? – codegirl

0
public class MainActivity extends Activity { 
    ProgressDialog pd; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    pd = new ProgressDialog(MainActivity.this); 
    pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    new DownloadImageTask((ImageView) findViewById(R.id.imageView1)) 
    .execute("Your URL"); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 
    DownloadImageTask(ImageView bmImage) { 
     this.bmImage = bmImage; 
     } 
    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
      pd = new ProgressDialog(MainActivity.this); 
      pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    } 



    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) { 
     pd.dismiss(); 
    bmImage.setImageBitmap(result); 
    } 
    }   
} 
+0

这应该适用于下载图像。在你的postExecute中,你可以显示图像。 – Raghunandan

+0

为url1 =新的URL(“UR URL); \t \t \t url1.openConnection()setConnectTimeout(1000); \t \t \t位图= BitmapFactory.decodeStream(url1.openConnection()的getInputStream()); – Raghunandan

+0

谢谢,现在就给这个:) – codegirl