• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)

Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android实战简易教程-第七十一枪(异步网络下载网络图片及图片廊制作)


首先来实现异步下载网络图片,布局文件如下:



网络请求类,继承Thread:

package com.test.demo;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.widget.ImageView;

public class LoadThread extends Thread {
	private String url;
	private Handler handler;
	private ImageView imageView;

	public LoadThread(String url, Handler handler, ImageView imageView) {
		this.url = url;
		this.handler = handler;
		this.imageView = imageView;
	}

	@Override
	public void run() {
		try {
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
			URL conn = new URL(url);
			HttpURLConnection httpURLConnection = (HttpURLConnection) conn.openConnection();
			InputStream in = httpURLConnection.getInputStream();
			byte data[] = new byte[2 * 1024];
			int len = 0;
			while ((len = in.read(data)) != -1) {
				byteArrayOutputStream.write(data, 0, len);
			}
			final Bitmap bitmap = BitmapFactory.decodeByteArray(byteArrayOutputStream.toByteArray(), 0,
					byteArrayOutputStream.toByteArray().length);
			handler.post(new  Runnable() {
				public void run() {
					imageView.setImageBitmap(bitmap);
				}
			});

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {

		}

	}

}


构造方法需要传入请求的URL地址,ImageView控件和Handler对象,方便将结果返回到UI线程,覆写了run方法,并且在run方法中编写了网络请求的方法,最后调用Handler的post方法,将请求结果反映到UI的ImageView上。对网络请求IO部分不熟悉的同学可以学习一下这部分知识,编写套路都是固定的。

MainActivity.java:

package com.test.demo;

import com.example.testandroid.R;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private Button btn;
	private ImageView img;
	private String url = "http://pic.yesky.com/uploadImages/2016/065/03/8VG0Q0HU97X3.jpg";
	private Handler handler = new Handler();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		btn = (Button) findViewById(R.id.btn_getpic);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				new LoadThread(url, handler, img).start();
			}
		});
		img = (ImageView) findViewById(R.id.img);
	}
}

注意--此应用需要配置网络权限。配置权限后运行项目如下:

\

下面可以添加一个向上和向下的按钮,实现图片切换,main.xml代码如下:




    


MainActivity.java修改如下:

package com.test.demo;

import com.example.testandroid.R;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
	private ImageView imageView;
	private Button buttonNext;
	private Button buttonPre;
	private String urls[] = { "http://pic.yesky.com/uploadImages/2016/065/03/8VG0Q0HU97X3.jpg",
			"http://img.sc115.com/hb/yl1/23/88160202491142.jpg",
			"http://pic.yesky.com/uploadImages/2016/065/48/2A05DMJ41LAN.jpg",
			"http://img4q.duitang.com/uploads/item/201408/12/20140812200853_vVnz2.png" };
	private Handler handler = new Handler();
	private int i=0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		imageView = (ImageView) findViewById(R.id.img);
		buttonNext = (Button) findViewById(R.id.btn_next);
		buttonPre = (Button) findViewById(R.id.btn_pre);
		buttonNext.setOnClickListener(this);
		buttonPre.setOnClickListener(this);
		new LoadThread(urls[0], handler, imageView).start();

	}

	@Override
	public void onClick(View v) {
		
		switch (v.getId()) {
		case R.id.btn_next:
			i++;
			new LoadThread(urls[i%4], handler, imageView).start();
			Toast.makeText(MainActivity.this, i%4+"", Toast.LENGTH_SHORT).show();
			
			break;

		case R.id.btn_pre:
			if(i>0){
				i--;}
				else{
					i=3;
				}
			new LoadThread(urls[i%4], handler, imageView).start();
			Toast.makeText(MainActivity.this, i%4+"", Toast.LENGTH_SHORT).show();
			
			break;
		}

	}

}

其中注意图片下标的逻辑处理!

运行实例如下:

\

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-26我的android学习经历12,android学习经历12
  • 2017-05-26安开发卓之Notification(一)代码直接能用,安开发notification
  • 2017-05-26Android中开发工具Android Studio修改created用户(windows环境),androidcreated
  • 2017-05-26Android开发:JSON简介&Gson、AS自带org.son、Jackson解析详解
  • 2017-05-26android配置android studio not found target android-*.的问题,androidandroid-
  • 2017-05-26Android中SimpleAdapter的使用—自定义列表,自定义simpleadapter
  • 2017-05-26仿Android印象笔记底部导航栏
  • 2017-05-26Android 动画资源 详解
  • 2017-05-26上传单个文件到多台机器工具
  • 2017-05-26android 管理wifi,androidwifi

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 6.2 数据存储与访问之——SharedPreferences保存用户偏好参数
    • NDK中使用pthread多线程中自己写的一个BUG,ndkpthread
    • Java Web 开发填坑记- 如何正确的下载 Eclipse,javaeclipse
    • 【微学堂】第22期| Nginx的性能优化
    • android四大组件之Broadcast,androidbroadcast
    • WebView上实现Java与JavaScript交互,webviewjavascript
    • Android工程文件下assets文件夹与res文件夹的区别
    • android组合控件Titlebar的定制过程
    • 安卓的主要几大布局,安卓布局
    • android开发之路03,android之路03

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有