在android下载图像

时间:2015-05-23 14:58:24

标签: java android

我正在处理我的Android应用程序并尝试从Web服务器(本地主机IIS7)下载图像。但不幸的是我的应用程序无法正常工作。实际上,当我运行我的应用程序时,它不显示ImageView内的任何图片。 我编译了我的应用程序,但我没有在logCat中发现任何错误!似乎每件事都没事。只有一条异国情调的消息:

  

编舞者跳过了32帧   但根据我的研究,我认为它不能影响我的应用程序。   我认为还有一件事,onPostExcute不是Run.but我找不到原因。   这是我的代码:

public class Ads extends Activity {

    private InputStream OpenHttpConnection(String urlString) throws IOException{
        InputStream in=null; 
        int response=-1;
        URL url=new URL(urlString);
        URLConnection conn =url.openConnection();
        if(!(conn instanceof HttpURLConnection))
            throw new IOException("Not an Http connection ");
        try{
            HttpURLConnection httpConn=(HttpURLConnection)conn;
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect();
            response=httpConn.getResponseCode();
            if(response== HttpURLConnection.HTTP_OK){
                in=httpConn.getInputStream();
            }
        }
        catch(Exception ex){
            Log.d("NetWorking",ex.getLocalizedMessage());
            throw new IOException("Error connecting");
        }
        return in; 
    }
    private Bitmap DownloadImag(String URL){
        Bitmap bitmap=null;
        InputStream in=null;
        try{
            in=OpenHttpConnection(URL);
            bitmap=BitmapFactory.decodeStream(in);
            in.close();

        }catch(IOException e1){
            Log.d("NetworkActivity",e1.getLocalizedMessage());
        }
        return bitmap;
    }
    public class DownloadImages extends AsyncTask<String,Void,Bitmap>{
        protected Bitmap doInBackground(String...urls){
            return DownloadImag(urls[0]);
        }
        protected void onPostExcute(Bitmap result){
            try{
            Log.d("Setting ImgView","Ok");
            ImageView img=(ImageView)findViewById(R.id.imageView1);
            img.setImageBitmap(result);
            }
            catch(Exception ex){
                Log.d("Setting ImgView","Error");
            }
        }
    }
    /** Called when the activity first created */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ads);
        Log.d("Start-Working", "ok");
        new DownloadImages().execute("http://10.0.2.2:80/Urgence/document/img/my.jpg");
    }   
}

我该怎么办?!

1 个答案:

答案 0 :(得分:0)

您可以使用一个库来加快图像加载速度, 它可以根据您的要求缓存图像。

Universal-Image-Loader

它很容易实现为页面中给出的代码段。

你也可以获得像......这样的位图。

// Load image, decode it to Bitmap and return Bitmap synchronously
Bitmap bmp = imageLoader.loadImageSync(imageUri);