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();}}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。