android从网络中获取一张图片
1.先看看简单的布局main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/urlpath" />
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="http://img1.gtimg.com/4/402/40281/4028144_550x550_0.jpg" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button" />
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
2.接着看看打开网络服务的类imageViewService.java
package com.wang.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.wang.utils.Streamutil;
public class imageViewService {
public static byte[] getImage(String path) throws Exception {
URL url=new URL("http://img1.gtimg.com/4/402/40281/4028144_550x550_0.jpg");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();//打开网络连接
conn.setRequestMethod("GET");//所用的方式为get 、post
conn.setConnectTimeout(5*1000);
InputStream inputstream=conn.getInputStream();// 通过输入流获取图片数据
return Streamutil.readInputStream(inputstream);//得到图片的二进制数据
}
}
3.接着编写从输入流中获取数据Streamutil.java
package com.wang.utils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class Streamutil {
//从输入流中获取数据
public static byte[] readInputStream(InputStream inputstream) throws Exception{
ByteArrayOutputStream outstream=new ByteArrayOutputStream();//缓冲区的数据存储
byte[] buffer=new byte[1024];//缓冲区
int len=0;
while((len=inputstream.read(buffer))!=-1)// 如果不等与-1则不断的进行读取
{
outstream.write(buffer,0,len);
}
inputstream.close();
return outstream.toByteArray();
}
}
4.然后看一下活动类ImageViewnetActivity.java
package com.wang;
import com.wang.service.imageViewService;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class ImageViewnetActivity extends Activity {
private EditText pathtext;
private ImageView imageview;
private static final String TAG="ImageViewnetActivity";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pathtext=(EditText)findViewById(R.id.edit);
imageview=(ImageView)findViewById(R.id.imageview);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String path= pathtext.getText().toString();
try {
byte[] data =imageViewService.getImage(path);
Bitmap bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);//生成位图
imageview.setImageBitmap(bitmap);//显示图片
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(ImageViewnetActivity.this, R.string.error, 1).show();
Log.e(TAG,e.toString()); }
}
});
}
}
5.亲、最后别忘了,访问网络需要的权限哦!!
<!-- 访问 网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
6.运行结果如下:嘿嘿!!看看我们可爱的奶茶妹妹是多么的好!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!