Android-下载网上图片

下载操作相关代码:
package liudeli.async; import android.app.Activity; import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast; import java.io.InputStream;
import java.net.HttpURLConnection; import java.net.URL; public class MainActivity3 extends Activity { // 图片地址
private final String PATH = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000" +
"&sec=1544714792699&di=3c2de372608ed6323f583f1c1b445e51&imgtype=0&src=http%3A%2F%2Fp" +
"2.qhimgs4.com%2Ft0105d27180a686e91f.jpg"; // 成功标识
private final int SUCCESS = 200; // 失败标识
private final int ERROR = 404; private ImageView imageView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); imageView = findViewById(R.id.iv_image);
} /**
* 定义Handler,用于接收子线程发过来的信息
*/
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case SUCCESS:
imageView.setImageBitmap((Bitmap) msg.obj);
break;
case ERROR:
Toast.makeText(MainActivity3.this, "下载失败,请检查原因", Toast.LENGTH_LONG).show();
break;
} if (null != progressDialog)
progressDialog.dismiss();
}
}; private ProgressDialog progressDialog = null; /**
* 获取图片 按钮
* @param view
*/
public void getImage(View view) {
progressDialog = new ProgressDialog(MainActivity3.this);
progressDialog.setMessage("正在下载...");
progressDialog.show(); // 开启子线程 下载图片
/**
* 执行此方法才去启动线程下载
*/
new Thread(new DownloadImage()).start();
} class DownloadImage implements Runnable { /**
* 发送Handler
*/
public void showUiImage(int responseCode, Bitmap bitmap) {
Message message = mHandler.obtainMessage(responseCode); // 拿系统消息池的消息, 不要 new Message();
message.obj = bitmap;
mHandler.sendMessageDelayed(message, 2000);
} @Override
public void run() {
try {
// 封装成网络地址
URL url = new URL(PATH); // 打开一个连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); // 设置连接时长
httpURLConnection.setConnectTimeout(5000); // 设置请求方式
httpURLConnection.setRequestMethod("GET"); /**
* 注意:⚠️ 不要肤浅的任务 打开连接对象 设置连接时长 设置请求方式 就向服务器发送Http请求了
* 是要执行httpURLConnection.getResponseCode()才会向服务器发送Http请求
*/
if (httpURLConnection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 得到服务器返回过来的流对象
InputStream inputStream = httpURLConnection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
showUiImage(SUCCESS, bitmap);
} else {
showUiImage(ERROR, null);
} } catch (Exception e) {
e.printStackTrace();
showUiImage(ERROR, null);
}
}
}
}
Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/bt_get_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取图片"
android:onClick="getImage"
/> <ImageView
android:id="@+id/iv_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/bt_get_image" /> </RelativeLayout>
AndroidManifest.xml 配置网络权限:
<uses-permission android:name="android.permission.INTERNET" />
Android-下载网上图片的更多相关文章
- Android 下载文件及写入SD卡
Android 下载文件及写入SD卡,实例代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- Android 下载模块分析(DownloadManager和DownloadProvider)
Android下载模块主要有2个部分组成:DownloadManager和DownloadProvider:其中DownloadManager提供接口供调用,具体的实现是 DownloadProvid ...
- Android下载更新代码
其实是昨天反编译一个apk,给它添加一个自动更新的功能用到的.为了在smali下方便查看,代码写的不规范,反正到了smali都一个吊样~~~~ 权限: <uses-permission andr ...
- android 下载文件,file的读写应用
先看代码: public class MainActivity extends AppCompatActivity { String TAG = MainActivity.class.getCanon ...
- Android下载图片/调用系统相机拍照、显示并保存到本地
package com.example.testhttpget; import java.io.BufferedReader; import java.io.FileNotFoundException ...
- Android下载更新的安装包以及九宫格界面
继上篇博客,我接下来做的是一个九宫格界面,但是对之前的Splash页面我还有要说的就是,当出现网络异常.json解析异常或者没有更新的时候,我们都必须要跳转到我们的主页面,因为Splash页面仅是展示 ...
- android 下载文件
import com.example.android.R; import android.app.Activity;import android.os.Bundle;import android.os ...
- Android 下载网络图片保存到本地
通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地. 首先需要在manifest上添加一些权限: <!-- 访问网络的权限 --> <uses-permi ...
- android下载简单工具类
功能是实现下载文件,图片或MP3等,为了简单起见使用单线程,此代码为MarsAndroid教程的复制品,放在此处,留着参考. 首先是一个得到字节流随后保存到内存卡上的工具类: package com. ...
- Android 下载文件 显示进度条
加入两个权限 一个是联网,另一个是读写SD卡 <uses-permission android:name="android.permission.INTERNET">& ...
随机推荐
- 20_java之集合Map
01Map集合概述 A:Map集合概述: 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同 a:Collection中的集合,元素是孤立 ...
- CSS——操作css文件
//动态 css文件内容. 修改鼠标经过时行.单元格的背景颜色 function header_rowOrcell_over(divGrid) { var gridopts = divGrid.dat ...
- Please specify exact device preset UUID
Please specify exact device preset UUID 重启RAD IDE,重新选择 IOS Simulator ,iphone 机型!
- Python进程监控-MyProcMonitor
psutil api文档: http://pythonhosted.org/psutil/ api 测试 #! /usr/bin/env python # coding=utf-8 import ps ...
- json和jsonp的区别(转)
原文链接:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 说到AJAX就会不可避免的面临 ...
- js是函数式的面向对象编程语言
js是函数式的面向对象编程语言,而非类式的面向对象编程语言
- 网页静态化解决方案:Freemarker生成简单html页面
FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与 Web 容器无关,即在 Web 运行时,它并不知道 Servlet 或 HTTP.它不仅 ...
- 用java实现一个简易编译器
- android用户登录验证
转自https://www.cnblogs.com/android-blogs/p/5912585.html
- zookeeper 阿里滴滴 有点用 zookeeper主从选举方式
面试也经常问kafka的原理,以及zookeeper与kafka原理的区别:kafka 数据一致性-leader,follower机制与zookeeper的区别: zookeeper是如何实现负载均衡 ...