时间:2021-05-20
本文实例讲述了Android编程实现下载图片及在手机中展示的方法。分享给大家供大家参考,具体如下:
在项目开发中从互联网上下载图片是经常用到的功能,再次总结一下
1.普通的下载方式
布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:src="@drawable/icon" android:layout_width="wrap_content" android:id="@+id/imgPic" android:layout_gravity="center|center_vertical" android:layout_height="fill_parent"> </ImageView></LinearLayout>java文件
public class DownloadImage extends Activity { private ImageView imgPic; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.download_image); imgPic = (ImageView) findViewById(R.id.imgPic); String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg"; loadRmoteImage(url); } /** * @param imgUrl * 远程图片文件的URL * * 下载远程图片 */ private void loadRmoteImage(String imgUrl) { URL fileURL = null; Bitmap bitmap = null; try { fileURL = new URL(imgUrl); } catch (MalformedURLException err) { err.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) fileURL .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); int length = (int) conn.getContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] buffer = new byte[512]; int readLen = 0; int destPos = 0; while ((readLen = is.read(buffer)) > 0) { System.arraycopy(buffer, 0, imgData, destPos, readLen); destPos += readLen; } bitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length); } } catch (IOException e) { e.printStackTrace(); } imgPic.setImageBitmap(bitmap); }2.带进度条的下载
有时候网络差,或者是图片太大,会出现黑屏的情况,用户体验比较差,那么增加一个进度条是提高用户体验的好方法
/** * @author xushilin xsl xushilin@kingtoneinfo.com * @version: 创建时间:2011-7-27 下午02:55:56 * 说 明: android中下载图片 * 修改历史: */public class DownloadImage extends Activity { private ImageView imgPic; private ProgressBar progressBar; private int totalSize=0; private int size=0; private Handler mHandler; String url = "http://ww1.sinaimg.cn/bmiddle/6834c769jw1djjf4p3p9rj.jpg"; private Bitmap bitmap=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.download_image); imgPic = (ImageView) findViewById(R.id.imgPic); progressBar = (ProgressBar) findViewById(R.id.progressBar); progressBar.setProgress(getProgressInt(progressBar.getMax())); mHandler = new Handler() { public void handleMessage(Message msg) { progressBar.setProgress(getProgressInt(progressBar.getMax())); if(bitmap!=null){ imgPic.setImageBitmap(bitmap); } } }; new Thread(){ public void run(){ loadRmoteImage(url); } }.start(); } /** * @param imgUrl * 远程图片文件的URL * * 下载远程图片 */ private void loadRmoteImage(String imgUrl) { URL fileURL = null; try { fileURL = new URL(imgUrl); } catch (MalformedURLException err) { err.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) fileURL .openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); int length = (int) conn.getContentLength(); totalSize=length; if (length != -1) { byte[] imgData = new byte[length]; byte[] buffer = new byte[512]; int readLen = 0; int destPos = 0; while ((readLen = is.read(buffer)) > 0) { System.arraycopy(buffer, 0, imgData, destPos, readLen); destPos += readLen; size=destPos; mHandler.sendEmptyMessage(1); Thread.sleep(100); } bitmap = BitmapFactory.decodeByteArray(imgData, 0, imgData.length); mHandler.sendEmptyMessage(1); } } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } private int getProgressInt(int max) { int result = (totalSize > 0) ? (int) (size * max * 1.0 / totalSize) : 0; return result; }}效果如下:
下载过程:
下载完成:
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android编程之语音识别实现方法。分享给大家供大家参考,具体如下:语音识别技术在手机上应用得相当广泛,人类日常最频繁的沟通方式是语音,而在手机
本文所述为Android实现下载文件功能的完整示例代码,对于学习和研究android编程相信会有一定的帮助,尤其是对Android初学者有一定的借鉴价值。完整功
Android实现获取手机里面的所有图片详解及实例实现代码:publicclassMainActivityextendsActivity{//查看图片按钮pri
本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法。分享给大家供大家参考,具体如下:Button或者ImageButton的背景设
本文实例讲述了Android编程实现等比例显示图片的方法。分享给大家供大家参考,具体如下:在android中,由于密度的影响,如果想得到图片的宽高是不行的,具体