androidj基础:从网上下载图片
一、布局文件
设置界面,添加一个ImageView,和两个Button按钮,设置其属性及id
<ImageView
android:id="@+id/ImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#ffffff" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="下载图片"
/> <Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_toRightOf="@+id/bt1" android:text="读取图片"
/>
二、声明网络权限
因为使用网络功能需要添加权限,修改AndroidManifest.xml文件添加权限声明语句。
<uses-permission android:name="android.permission.INTERNET"/>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.httpexe">
<uses-permission android:name="android.permission.INTERNET"/> </manifest>
三、编辑ManActivity.java文件。
import...//import语句自动生成,略
public class MainActivity extends AppCompatActivity { ImageView imageView;
Button button;
Button button1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.ImageView);
button = (Button) findViewById(R.id.bt1);
button1=(Button)findViewById(R.id.bt2); button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyTask task = new MyTask();//创建异步任务对象
task.execute("https://www.baidu.com/img/bd_logo1.png");//创建下载任务
}
});
button1.setOnClickListener(new View.OnClickListener() {//读取图片 @Override
public void onClick(View v) {
Bitmap bmp=null;
try{
FileInputStream fis= openFileInput("a.png");
bmp=BitmapFactory.decodeStream(fis);
if(bmp!=null) {
imageView.setImageBitmap(bmp);
}
}catch (Exception ex) {
}
}
});
}
public class MyTask extends AsyncTask<String, Void, Bitmap> { //bmp位图,泛型
@Override
protected Bitmap doInBackground(String... params) { //真正的下载
String urlStr = params[0]; //取第一个变参
Bitmap bmp = null;
try {
URL url = new URL(urlStr);
bmp=BitmapFactory.decodeStream(url.openStream()); //位图工厂,返回bitmap
InputStream is= url.openStream();
byte[] buffer=new byte[4096];//byte[]缓冲区
FileOutputStream fos= MainActivity.this.openFileOutput("a.png",MainActivity.MODE_PRIVATE);
int hasRead=is.read(buffer);
while (hasRead>0){
fos.write(buffer,0,hasRead);//文件大小,起始位置,读取的量
hasRead=is.read(buffer);
}
fos.close();//关闭
is.close();//关闭
}
catch (Exception ex) {
}finally {
}
return bmp;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
if(bitmap!=null){
imageView.setImageBitmap(bitmap);
}
}
}
四、运行结果
点击下载按钮下载图片。读取图片按钮的作用:下载一次后,不需要重新下载。

小记:
java代码输入时有些会自动弹出,并匹配到相应包,直接贴会有报错。
androidj基础:从网上下载图片的更多相关文章
- 【转】java URLConnection从网上下载图片或音乐
try { //根据String形式创建一个URL对象, URL url = new URL("http://www.baidu.com"); //实列一个URLconne ...
- nodejs 网上下载图片到本地,并判断图片路径是否存在
var http = require("http"); var fs = require("fs"); var server = http.createServ ...
- [C#基础实例]指定地址解析图片并下载
需求:查找页面图片并下载至本地: 实现: 首先:读取通过网络html内容,并用正则表达式查找图片地下. 其次:使用WebRequest.Create创建图片请求. 最后:把获取图片网络流数据通过Fil ...
- python下载图片超时的调查
在使用python3下载图片时, 常用的方法有urlretrieve和requests两种, 不管哪种方法在网速极慢的情况下, 会出现图片下载卡住现象.那如何解决呢? 小编根据网上提供的资料测试了几种 ...
- 用Scrapy爬虫下载图片(豆瓣电影图片)
用Scrapy爬虫的安装和入门教程,这里有,这篇链接的博客也是我这篇博客的基础. 其实我完全可以直接在上面那篇博客中的代码中直接加入我要下载图片的部分代码的,但是由于上述博客中的代码已运行,已爬到快九 ...
- android 73 下载图片
package com.ithiema.imageviewer; import java.io.InputStream; import java.net.HttpURLConnection; impo ...
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- 织梦cms网上复制图片不可用的解决方法
背景描述: 织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供 ...
- .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
摘要:上篇文章写到一种上传图片的方法,其中提到那种方法的局限性,就是上传的文件只能保存在本项目目录下,在其他目录中访问不到该文件.这与浏览器的安全性机制有关,浏览器不允许用户用任意的路径访问服务器上的 ...
随机推荐
- (原创)Rocketmq分布式消息队列的部署与监控
-------------------------------------------------------------------------------------------- 一.Rocke ...
- 为啥百度、网易、小米都用Python?Python的用途是什么?
Python是一门脚本语言.由于能将其他各种编程语言写的模块粘接在一起,也被称作胶水语言.强大的包容性.强悍的功能和应用的广泛性使其受到越来越多的关注,想起一句老话:你若盛开.蝴蝶自来. 假设你感 ...
- 【原创 Hadoop&Spark 动手实践 7】Spark 计算引擎剖析与动手实践
[原创 Hadoop&Spark 动手实践 7]Spark计算引擎剖析与动手实践 目标: 1. 理解Spark计算引擎的理论知识 2. 动手实践更深入的理解Spark计算引擎的细节 3. 通过 ...
- h5 扫描二维码打开app和点击下载功能的实现
window.onload = function () { jumpToapp() } var browser = { isAndroid: function () { return navigato ...
- (原)关于ffmpeg使用custom io-context遇到的一些坑
今天在使用android-as_video_player这个开源的框架来实现自己项目中的一个播放器,中间关于ndk编译ffmpeg遇到的坑,现在想起来,对ndk的心态,现在心里都有一万个cnm在奔腾, ...
- [sqoop] sqoop 小试牛刀
sqoop 1.4.6 小试牛刀 sqoop import 参数 1. mysql导入 到hdfs中 ./sqoop import --connect jdbc:mysql://mysql:3306 ...
- 解决Postgres无法连接的问题
错误信息如下: could not connect to server: Connection refused Is the server running on host host.domain.co ...
- 134、直接拿来用,Android界最火的开源项目
Android酷炫开源动框架2015-2016双年榜(转载) http://blog.csdn.net/u011200604/article/details/54428128 GitHub上受欢迎的A ...
- windows上,任务管理器中,进程命令行太长怎么办
一.前言 在windows上,有时候需要查看进程命令行,但是有的进程的命令行太长了,很难看全 此时,可以使用下面的方法解决(红框改为自己要查看的进程即可): C:\Users\Gaoyu>wmi ...
- Java中的 内部类(吐血总结)
1. 内部类的作用 内部类是一个独立的实体,可以用来实现闭包:能与外部类通信:内部类与接口使得多继承更完整 2. 内部类的分类 1)普通内部类 类的实例相关,可以看成是一个实例变量.内部类的类名由 “ ...