Android互联网访问图片并在客户端显示的方法
作者:sgx425021234 发布时间:2021-12-26 21:25:10
标签:Android,图片
本文实例讲述了Android互联网访问图片并在客户端显示的方法。分享给大家供大家参考,具体如下:
1、布局界面
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<EditText
android:id="@+id/url_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:ems="10"
android:inputType="textPostalAddress"
android:text="@string/url_text" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btn_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/url_text"
android:layout_below="@+id/url_text"
android:layout_marginTop="32dp"
android:onClick="sendHttp"
android:text="@string/btn_text" />
<ImageView
android:id="@+id/iv_ie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/url_text"
android:layout_below="@+id/btn_text"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
2、封转的一些类
URL的封装:
package com.example.lession08_code.utis;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
public class HttpUtils {
public static String sendGet(String path){
String content=null;
try{
//设置访问的url
URL url=new URL(path);
//打开请求
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
//设置请求的信息
httpURLConnection.setRequestMethod("GET");
//设置请求是否超时
httpURLConnection.setConnectTimeout(5000);
//判断服务器是否响应成功
if(httpURLConnection.getResponseCode()==200){
//获取响应的输入流对象
InputStream is=httpURLConnection.getInputStream();
byte data[]=StreamTools.isTodata(is);
//把转换成字符串
content=new String(data);
//内容编码方式
if(content.contains("gb2312")){
content=new String(data,"gb2312");
}
}
//断开连接
httpURLConnection.disconnect();
}catch(Exception e){
e.printStackTrace();
}
return content;
}
public static Bitmap sendGets(String path){
Bitmap bitmap=null;
try{
//设置访问的url
URL url=new URL(path);
//打开请求
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
//设置请求的信息
httpURLConnection.setRequestMethod("GET");
//设置请求是否超时
httpURLConnection.setConnectTimeout(5000);
//判断服务器是否响应成功
if(httpURLConnection.getResponseCode()==200){
//获取响应的输入流对象
InputStream is=httpURLConnection.getInputStream();
//直接把is的流转换成Bitmap对象
bitmap=BitmapFactory.decodeStream(is);
}
//断开连接
httpURLConnection.disconnect();
}catch(Exception e){
e.printStackTrace();
}
return bitmap;
}
}
判断网络是否连接的封装类
package com.example.lession08_code.utis;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;
public class NetWorkUtils {
private Context context;
// 网路链接管理对象
public ConnectivityManager connectivityManager;
public NetWorkUtils(Context context) {
this.context = context;
// 获取网络链接的对象
connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
}
public boolean setActiveNetWork() {
boolean flag=false;
// 获取可用的网络链接对象
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo == null) {
new AlertDialog.Builder(context)
.setTitle("网络不可用")
.setMessage("可以设置网络?")
.setPositiveButton("确认",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
Toast.makeText(context, "点击确认",
Toast.LENGTH_LONG).show();
// 声明意图
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory("android.intent.category.LAUNCHER");
intent.setComponent(new ComponentName(
"com.android.settings",
"com.android.settings.Settings"));
intent.setFlags(0x10200000);
// 执行意图
context.startActivity(intent);
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
}).show();// 必须.show();
}
if(networkInfo!=null){
flag=true;
}
return flag;
}
}
输出流的封装类
package com.example.lession08_code.utis;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamTools {
public static byte[] isTodata(InputStream is) throws IOException{
//字节输出流
ByteArrayOutputStream bops=new ByteArrayOutputStream();
//读取数据的缓冲区
byte buffer[]=new byte[1024];
//读取记录的长度
int len=0;
while((len=is.read(buffer))!=-1){
bops.write(buffer, 0, len);
}
//把读取的内容转换成byte数组
byte data[]=bops.toByteArray();
return data;
}
}
注意:在这里还需要加权限问题
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- 前段时间写了一篇基于mybatis实现的多数据源博客。感觉不是很好,这次打算加入git,来搭建一个基于Mybatis-Plus的多数据源项目
- 附GitHub源码:WebViewExplore一、WebView的基础配置WebSettings ws = getSettings();w
- 一、项目概述之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢?说实话,使用java语言直接开发游戏这个需
- 为了实现自定义的Menu和ContextMenu效果,下面演示代码通过派生ProfessionalColorTable类,在自定义的类中重写
- #region 解压 文件 zip 格式 rar 格式
- 在spring 3.2 及以后版本中增加了对请求的异步处理,旨在提高请求的处理速度降低服务性能消耗。在我们的请求中做了耗时处理,当并发请求的
- • 创建目录和文件1、通过Path类的Combine方法可以合并路径。string activeDir = @"C:\myDir&
- 本文实例为大家分享了java实现加减乘除计算器的具体代码,供大家参考,具体内容如下代码import java.awt.*;import ja
- Android的应用被限制为最多占用16m的内存,至少在T-Mobile G1上是这样的(当然现在已经有几百兆的内存可以用了——译者注)。它
- 效果如下:直接上代码,留着以后用,代码目录结构如下:其中BaseFragment.java是另外5个Fragment的基类,代码如下:pac
- 介绍在上一篇“SimpleAdapter“章节中,我们看到了把:ListView和Listview内
- 本文主要介绍了Android studio利用gradle打jar包并混淆的方法,下面话不多说,来看看详细的介绍吧。首先打jar包的配置很简
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 一、快捷键添加代码块:++快速生成属性等:++导包:+++自动创建变量名:++查找源代码:++按条件查找替换:++快速查看当前类的所有方法:
- ·嵌套管程死锁是如何发生的·具体的嵌套管程死锁的例子·嵌套管程死锁 vs 死锁嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景:Thr
- 前文传送门:Netty分布式高性能工具类recycler的使用及创建从对象回收站中获取对象我们回顾上一小节demo的main方法中从回收站获
- 将通用算法放入具体类(HeapSorter),并将通用算法必须调用的方法定义在接口(HeapSorterHandle)中,从这个接口派生出D
- 二叉搜索树的定义它是一颗二叉树任一节点的左子树上的所有节点的值一定小于该节点的值任一节点的右子树上的所有节点的值一定大于该节点的值特点: 二
- 前言本文主要给大家介绍了关于如何实现Builder模式,大家在构建大对象时,对象的属性比较多,我们可以采用一个构造器或者使用空的构造器构造,
- FPS 每秒帧数背景消除建模 BSMBackground SUbtractionBS算法图像分割(GMM-高斯混合模型)机器学习(KNN-K