Android下载图片
16lz
2022-07-24
简单写了个请求网络下载图片,保存到sdcard中,并在app中展示图片
public class MainActivity extends AppCompatActivity { private ImageView mIamgeView ; Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mIamgeView = (ImageView) findViewById(R.id.imageview); new MyThread("http://b.hiphotos.baidu.com/image/pic/item/7a899e510fb30f2493c8cbedcc95d143ac4b0389.jpg",mIamgeView,handler).start(); }}
然后写一个工具类
public class MyThread extends Thread { private String uri; private ImageView imageView; Handler handler; private File name; public MyThread(String uri, ImageView imageView, Handler handler) { this.uri = uri; this.imageView = imageView; this.handler = handler; } @Override public void run() { super.run(); try { final URL httpuri = new URL(uri); HttpURLConnection connection = (HttpURLConnection) httpuri.openConnection(); connection.setReadTimeout(2000); connection.setRequestMethod("GET"); connection.setConnectTimeout(2000); connection.setDoInput(true); InputStream inputStream = connection.getInputStream(); FileOutputStream fos = null; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File file = Environment.getExternalStorageDirectory(); name = new File(file, "a"); fos = new FileOutputStream(name); } byte [] b = new byte[1024]; int len; while((len=inputStream.read(b))!=-1){ fos.write(b,0,len); } final Bitmap bitmap = BitmapFactory.decodeFile(name.getAbsolutePath()); handler.post(new Runnable() { @Override public void run() { imageView.setImageBitmap(bitmap); } }); } catch (Exception e) { e.printStackTrace(); } }}
最后别忘了加二个权限,一个是写sdcard,一个是请求网络。
我输入的URL是一张美图哦。展示美图效果:
更多相关文章
- Android使用Retrofit进行网络请求
- Android中判断网络功能是否可用
- Android的网络状态判断
- Android(安卓)Paging组件Demo
- 【安卓笔记】android客户端与服务端交互的三种方式
- Android(安卓)7.0 https/tls证书配置问题
- Android(安卓)startActivityForResult的使用
- Android网络状态获取类 在api 29中 NetworkInfo Deprecated
- 13-7-13如何修改android的title