• Android从服务器获取图片数据

    HttpURLConnection的使用
    服务器君一共花费 19.035 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    在昨天的 Android 使用 HttpClient 从服务器获取数据 这一小节里,我们演示了 Android 如何从服务器获取数据,并把数据更新到 UI 上。但是这还不是我们的目标,我们的目标是做一个图片应用,所以今天我们做的例子是,从服务器拿一张图片,并且更新到 UI 上。

    程序跟前面小节基本一致,区别仅仅是从拿文字数据变成拿图片数据而已。

    直接上代码:

    private ImageView imgView;  
    private Button btn_next;
    
    private Handler pic_hdl;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	// TODO Auto-generated method stub
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.painting);
    	
    	imgView = (ImageView)findViewById(R.id.imgv);
    	btn_next = (Button)findViewById(R.id.btn_loadnext);
    	
    	btn_next.setOnClickListener(new ButtonListener());
    	
    	pic_hdl = new PicHandler();
    }
    
    class ButtonListener implements OnClickListener{
    
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		if( v.getId() == R.id.btn_loadnext){
    			Thread t = new LoadPicThread();
    			t.start();
    		}
    	}
    	
    }
    
    class LoadPicThread extends Thread{
    	@Override
    	public void run(){
    		Bitmap img = getUrlImage("http://www.nowamagic.net/librarys/images/random/rand_11.jpg");
    		Message msg = pic_hdl.obtainMessage();
    		msg.what = 0;
    		msg.obj = img;
    		pic_hdl.sendMessage(msg);  
    	}
    }
    
    class PicHandler extends Handler{
    
    	@Override
    	public void handleMessage(Message msg) {
    		// TODO Auto-generated method stub
    		//String s = (String)msg.obj;
    		//ptv.setText(s);
    		Bitmap myimg = (Bitmap)msg.obj;
    		imgView.setImageBitmap(myimg);
    	}
    	
    }
    
    //加载图片  
    public Bitmap getUrlImage(String url) {  
    	Bitmap img = null;  
    	try {  
    		URL picurl = new URL(url);  
    		// 获得连接  
    		HttpURLConnection conn = (HttpURLConnection)picurl.openConnection();  
    		conn.setConnectTimeout(6000);//设置超时  
    		conn.setDoInput(true);  
    		conn.setUseCaches(false);//不缓存  
    		conn.connect();  
    		InputStream is = conn.getInputStream();//获得图片的数据流  
    		img = BitmapFactory.decodeStream(is);  
    		is.close();  
    	} catch (Exception e) {  
    		e.printStackTrace();  
    	}  
    	return img;  
    }
    

    App 运行结果如图:

    程序关键是方法 getUrlImage,HttpURLConnection 负责从网上获取图片流。其它都是和前一篇差不多。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [JavaScript程序设计] jQuery与表单操作 2 个条目
  2. [移动开发] ListView 使用相关问题集 1 个条目
  3. [软件工程与项目管理] 呈现树的构建 13 个条目
  4. [PHP程序设计] 声明式编程范式 12 个条目
  5. [PHP程序设计] fsockopen,curl与file_get_contents 12 个条目
  6. [PHP程序设计] PHP数组的遍历 7 个条目
  7. [PHP程序设计] PHP数组探索 4 个条目
  8. [智力开发与知识管理] 整体性学习策略 9 个条目
  9. [PHP程序设计] PHP里的引用 5 个条目
  10. [Python程序设计] 标准库:urllib/urllib2 14 个条目
  11. [运维管理] 路由器与交换机 4 个条目
  12. [PHP程序设计] PHP中的Hash算法 3 个条目
窗口 -- [博客]