Android - 从URL加载图片不起作用

时间:2014-01-16 14:51:34

标签: android

请帮我处理这些代码,它不会显示来自网址的图片。

另一个问题,如何调试每个函数,如“url.openConnection”,“getInputStream”....以确认它们是否正常工作?

谢谢

public class MainActivity extends Activity {

    Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainlayout);
        // ImageView
        ImageView imgView = new ImageView(this);
        mainLayout.addView(imgView);

        bitmap = loadImage("https://www.google.com.vn/logos/doodles/2014/dian-fosseys-82nd-birthday-5702250374627328-hp.jpg");
        imgView.setImageBitmap(bitmap);


    }

    public Bitmap loadImage(String src)
    {
        try
        {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            input.close();
            return myBitmap;
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }

    }

}

2 个答案:

答案 0 :(得分:2)

问题在于您正在主线程上进行网络通信,并且肯定会因此而获得NetworkOnMainThreadException

虽然您可以实施AsyncTask来管理网络呼叫,但我强烈建议您使用具备网络功能的图像库来为您完成所有繁重的工作。

https://github.com/nostra13/Android-Universal-Image-Loader

答案 1 :(得分:0)

选择ImageLoader库可能不是一个好主意,而不是自己做所有这些细节。它也没有优化和容易出错。