如何在Android中显示来自Uri的位图图像?

时间:2014-09-27 18:48:29

标签: java android google-maps bitmap

我想使用谷歌静态地图API,并下载我的位置的位图图像并在我的应用程序中显示为图像,我写了这段代码,但我的应用程序停止了,有什么问题?

代码:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);

    String URL = "http://maps.google.com/maps/api/staticmap?center=48.858235,2.294571&zoom=15&size=200x200&sensor=false";
    Bitmap bmp = null;
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet request = new HttpGet(URL);

    InputStream in = null;
    try {
        in = httpclient.execute(request).getEntity().getContent();
         bmp = BitmapFactory.decodeStream(in);
        in.close();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    ImageView vi=(ImageView)findViewById(R.id.salak);
    vi.setImageBitmap(bmp);


}

我刚刚在Oncreate()函数中写了这部分代码,并在.xml文件中有一个ImageViewer来显示图像,但我的程序没有工作Corectly,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

正如JRowan在评论中所说,问题的最可能原因是你试图在主线程上进行网络调用,这是不允许的。

看到这个: http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

从Uri加载ImageView的最简单方法是使用Square的Picasso库,可在此处找到:

http://square.github.io/picasso/

您下载并安装了一个,然后您可以加载ImageView,如下所示:

Picasso.with(context).load(yourUrl).into(yourImageView);

如果在活动中运行,您可以使用this作为上下文。