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">& ...
随机推荐
- leetcode162
class Solution { public: int findPeakElement(vector<int>& nums) { int n = nums.size(); ) { ...
- tornado 之 异步非阻塞
异步非阻塞 1.基本使用 装饰器 + Future 从而实现Tornado的异步非阻塞 import tornado.web import tornado.ioloop from tornado im ...
- U盘安装centos7.1出现dracut问题的超简单解决方法
恰好今天有空,于是抽空回忆一下之前U盘安装CENTOS7时遇到的一个大坑.U盘装系统习惯了,就顺手用大白菜工具刻了一个CentOS 7.1的minimun ISO镜像到U盘,于是噩梦开始了.如果有人像 ...
- Alternative PHP Cache ( APC )
简介: Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存.它的目标是提供一个自由.开放和健全的框架用于缓存和优化 PHP 的中间代码,加快 PHP 执 ...
- 【 Makefile 编程基础之…
本站文章均为李华明Himi原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/766.html 概述: ...
- Hash表算法详解
Hash表定义 散列表(Hash table,也叫哈希表),是根据关键字值(Key value)直接进行访问的数据结构.也就是说,它通过把关键字(关键字通过Hash算法生成)映射到表中一个位置来访问记 ...
- nginx 真实ip
server { listen 80; server_name localhost; location /{ root html; index index.html index.h ...
- C#的ComboBox学习使用2018.08.03
ComboBox是一个有下拉列表的文本显示框,其text为当前的文本,item属性为项 comboBox1.Items.Add("); id = comboBox1.Text; 可以采用se ...
- Listview getItemViewType的使用
ListView中有两个可以用来让ListView可以在视图中显示多种布局的方法,分别是getItemType和getViewTypeCount 其中 getItemViewType返回的是有参数po ...
- SQL Compare数据库版本比较工具
Red Gate系列文章: Red Gate系列之一 SQL Compare 10.4.8.87 Edition 数据库比较工具 完全破解+使用教程 Red Gate系列之二 SQL Source C ...