图片查看器

这个与获得服务器相应源码相近似,只是把源码换成图片。

借助了

Bitmap bitmap=BitmapFactory.decodeStream( inputStream );

ImageView iv_pic对象只需要调用set方法便可以显示图片 iv_pic.setImgBitmap(bitmap);


注意当错误出现时,也需要发消息,区分消息用Message.what  

粘上代码:

public class MainActivity extends Activity {
	private final int SUCCESS=1;
	private final int Error=0;
	private ImageView imageView;
	private Handler handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView=(ImageView) findViewById(R.id.imgview);
        Button bt=(Button) findViewById(R.id.bt);
        handler=new Handler(){
    		@Override
    		public void handleMessage(Message msg) {
    			if(msg.what==SUCCESS){
    				imageView.setImageBitmap((Bitmap) msg.obj);
    			}
    			else{
    				Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show();
    			}
    		}		
    	};
        
        bt.setOnClickListener(new OnClickListener(){
        	File file=new File(getCacheDir(),"tomcat.png");
        	
			@Override
			public void onClick(View v) {
				if(file!=null&&file.length()>0)
				{
					Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
					imageView.setImageBitmap(bitmap);
					Toast.makeText(MainActivity.this, "调用缓存", Toast.LENGTH_SHORT).show();
					return;
				}
				new Thread(){
					@Override
					public void run() {			
						try {
							URL url=new URL("http://10.0.2.2:8080/tomcat.png");
							HttpURLConnection connection=(HttpURLConnection) url.openConnection();
							connection.setRequestMethod("GET");
							connection.setConnectTimeout(10000);
							int response=connection.getResponseCode();
							if(response==200)
							{
								InputStream input=connection.getInputStream();
								FileOutputStream fos=new FileOutputStream(file);
								int len=0;
								byte[]buff=new byte[1024];
								while((len=input.read(buff))>0)
								{
									fos.write(buff,0,len);
								}
								fos.close();
								input.close();
								Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
								Message message=new Message();
								message.obj=bitmap;
								message.what=SUCCESS;
								handler.sendMessage(message);
							}else
							{
								Message msg=new Message();
								msg.obj="服务器忙,获取失败";
								msg.what=Error;
								handler.sendMessage(msg);							
							}
						} catch (Exception e) {
							Message msg=new Message();
							msg.obj="服务器忙,获取失败";
							msg.what=Error;
							handler.sendMessage(msg);
							e.printStackTrace();
						}
					}				
				}.start();
				
			}       	
        });
    }  
}


runOnUiThread(Runnable action); 会判断当前线程,若是主线程则直接执行,若不是主线程,则通过handler自动封装好,然后放在主程序里执行。

它是Activity的API

一般这样:(适合于处理较少的情况,逻辑简单的)

 runOnUiThread(new Runnable(){   

public void run(){    }

});





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值