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

    HttpURLConnection的使用
    服务器君一共花费 203.552 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. [软件工程与项目管理] 浏览器的CSS解析 7 个条目
  2. [计算机算法] 从双端队列引出的卡特兰数 3 个条目
  3. [PHP程序设计] 对输入文件类型的检测 1 个条目
  4. [数据结构] 散列表(哈希表) 13 个条目
  5. [PHP程序设计] PHP里的引用 5 个条目
  6. [移动开发] 从代码角度去认识 Thread 9 个条目
  7. [软件工程与项目管理] 了解一点WebKit 9 个条目
  8. [JavaScript程序设计] jQuery与表单操作 2 个条目
  9. [C语言程序设计] C语言里的全局变量 2 个条目
  10. [Python程序设计] 从PHP到Python 3 个条目
  11. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
  12. [Linux操作系统] 基本 Linux Shell 命令 2 个条目
窗口 -- [八点]