Android 简单的图片查看器源码实现
本文介绍了Android简单的图片查看器源码实现,分享给大家,具体如下:
publicclassMainActivityextendsActivity{ privateEditTextet_path; privateImageViewiv; //创建handler对象 //privateHandlerhandler=newHandler(){ // ////处理消息 //publicvoidhandleMessage(android.os.Messagemsg){ // //Bitmapbitmap=(Bitmap)msg.obj; //iv.setImageBitmap(bitmap); //};}; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]找到我们关心的控件 et_path=(EditText)findViewById(R.id.et_path); iv=(ImageView)findViewById(R.id.iv); } //[2]点击按钮进行查看指定路径的源码 publicvoidclick(Viewv){ newThread(){publicvoidrun(){ try{ //[2.1]获取访问图片的路径 Stringpath=et_path.getText().toString().trim(); Filefile=newFile(getCacheDir(),Base64.encodeToString(path.getBytes(),Base64.DEFAULT)); if(file.exists()&&file.length()>0){ //使用缓存的图片 System.out.println("使用缓存图片"); finalBitmapcacheBitmap=BitmapFactory.decodeFile(file.getAbsolutePath()); //把cacheBitmap显示到iv上 //Messagemsg=Message.obtain(); //msg.obj=cacheBitmap; //handler.sendMessage(msg);//发消息 runOnUiThread(newRunnable(){ publicvoidrun(){ iv.setImageBitmap(cacheBitmap); } }); }else{ //第一次访问联网获取数据 System.out.println("第一次访问连接网络"); //[2.2]创建url对象 URLurl=newURL(path); //[2.3]获取httpurlconnection HttpURLConnectionconn=(HttpURLConnection)url.openConnection(); //[2.4]设置请求的方式 conn.setRequestMethod("GET"); //[2.5]设置超时时间 conn.setConnectTimeout(5000); //[2.6]获取服务器返回的状态码 intcode=conn.getResponseCode(); if(code==200){ //[2.7]获取图片的数据不管是什么数据(txt文本图片数据)都是以流的形式返回 InputStreamin=conn.getInputStream(); //[2.7]缓存图片谷歌给我们提供了一个缓存目录 FileOutputStreamfos=newFileOutputStream(file); intlen=-1; byte[]buffer=newbyte[1024];//1kb while((len=in.read(buffer))!=-1){ fos.write(buffer,0,len); } fos.close(); in.close(); //[2.8]通过位图工厂获取bitmap(bitmap) finalBitmapbitmap=BitmapFactory.decodeFile(file.getAbsolutePath()); //这句api不管你在什么位置上调用action都运行在UI线程里 runOnUiThread(newRunnable(){ publicvoidrun(){ //run方法一定执行在UI线程里 //[2.9]把bitmap显示到iv上 iv.setImageBitmap(bitmap); } }); //Messagemsg=Message.obtain();//使用msg的静态方法可以减少对象的创建 //msg.obj=bitmap; //handler.sendMessage(msg);//发消息 } } }catch(Exceptione){ e.printStackTrace(); } };}.start();}}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。