Android开发(13)-- 互联网访问图片,在android客户端显示

1、布局界面

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".MainActivity" >
  10. <EditText
  11. android:id="@+id/url_text"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:layout_alignParentLeft="true"
  15. android:layout_alignParentRight="true"
  16. android:layout_alignParentTop="true"
  17. android:ems="10"
  18. android:inputType="textPostalAddress"
  19. android:text="@string/url_text" >
  20. <requestFocus />
  21. </EditText>
  22. <Button
  23. android:id="@+id/btn_text"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_alignLeft="@+id/url_text"
  27. android:layout_below="@+id/url_text"
  28. android:layout_marginTop="32dp"
  29. android:onClick="sendHttp"
  30. android:text="@string/btn_text" />
  31. <ImageView
  32. android:id="@+id/iv_ie"
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:layout_alignParentBottom="true"
  36. android:layout_alignParentLeft="true"
  37. android:layout_alignRight="@+id/url_text"
  38. android:layout_below="@+id/btn_text"
  39. android:src="@drawable/ic_launcher" />
  40. </RelativeLayout>
<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的封装:

  1. package com.example.lession08_code.utis;
  2. import java.io.InputStream;
  3. import java.net.HttpURLConnection;
  4. import java.net.URL;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. public class HttpUtils {
  8. public static String sendGet(String path){
  9. String content=null;
  10. try{
  11. //设置访问的url
  12. URL url=new URL(path);
  13. //打开请求
  14. HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
  15. //设置请求的信息
  16. httpURLConnection.setRequestMethod("GET");
  17. //设置请求是否超时
  18. httpURLConnection.setConnectTimeout(5000);
  19. //判断服务器是否响应成功
  20. if(httpURLConnection.getResponseCode()==200){
  21. //获取响应的输入流对象
  22. InputStream is=httpURLConnection.getInputStream();
  23. byte data[]=StreamTools.isTodata(is);
  24. //把转换成字符串
  25. content=new String(data);
  26. //内容编码方式
  27. if(content.contains("gb2312")){
  28. content=new String(data,"gb2312");
  29. }
  30. }
  31. //断开连接
  32. httpURLConnection.disconnect();
  33. }catch(Exception e){
  34. e.printStackTrace();
  35. }
  36. return content;
  37. }
  38. public static Bitmap sendGets(String path){
  39. Bitmap bitmap=null;
  40. try{
  41. //设置访问的url
  42. URL url=new URL(path);
  43. //打开请求
  44. HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
  45. //设置请求的信息
  46. httpURLConnection.setRequestMethod("GET");
  47. //设置请求是否超时
  48. httpURLConnection.setConnectTimeout(5000);
  49. //判断服务器是否响应成功
  50. if(httpURLConnection.getResponseCode()==200){
  51. //获取响应的输入流对象
  52. InputStream is=httpURLConnection.getInputStream();
  53. //直接把is的流转换成Bitmap对象
  54. bitmap=BitmapFactory.decodeStream(is);
  55. }
  56. //断开连接
  57. httpURLConnection.disconnect();
  58. }catch(Exception e){
  59. e.printStackTrace();
  60. }
  61. return bitmap;
  62. }
  63. }
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;
	}
}


判断网络是否连接的封装类

  1. package com.example.lession08_code.utis;
  2. import android.app.AlertDialog;
  3. import android.content.ComponentName;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.content.Intent;
  7. import android.net.ConnectivityManager;
  8. import android.net.NetworkInfo;
  9. import android.widget.Toast;
  10. public class NetWorkUtils {
  11. private Context context;
  12. // 网路链接管理对象
  13. public ConnectivityManager connectivityManager;
  14. public NetWorkUtils(Context context) {
  15. this.context = context;
  16. // 获取网络链接的对象
  17. connectivityManager = (ConnectivityManager) context
  18. .getSystemService(Context.CONNECTIVITY_SERVICE);
  19. }
  20. public boolean setActiveNetWork() {
  21. boolean flag=false;
  22. // 获取可用的网络链接对象
  23. NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
  24. if (networkInfo == null) {
  25. new AlertDialog.Builder(context)
  26. .setTitle("网络不可用")
  27. .setMessage("可以设置网络?")
  28. .setPositiveButton("确认",
  29. new DialogInterface.OnClickListener() {
  30. @Override
  31. public void onClick(DialogInterface dialog,
  32. int which) {
  33. Toast.makeText(context, "点击确认",
  34. Toast.LENGTH_LONG).show();
  35. // 声明意图
  36. Intent intent = new Intent();
  37. intent.setAction(Intent.ACTION_MAIN);
  38. intent.addCategory("android.intent.category.LAUNCHER");
  39. intent.setComponent(new ComponentName(
  40. "com.android.settings",
  41. "com.android.settings.Settings"));
  42. intent.setFlags(0x10200000);
  43. // 执行意图
  44. context.startActivity(intent);
  45. }
  46. })
  47. .setNegativeButton("取消",
  48. new DialogInterface.OnClickListener() {
  49. @Override
  50. public void onClick(DialogInterface dialog,
  51. int which) {
  52. }
  53. }).show();// 必须.show();
  54. }
  55. if(networkInfo!=null){
  56. flag=true;
  57. }
  58. return flag;
  59. }
  60. }
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;
	}
}


输出流的封装类

  1. package com.example.lession08_code.utis;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. public class StreamTools {
  6. public static byte[] isTodata(InputStream is) throws IOException{
  7. //字节输出流
  8. ByteArrayOutputStream bops=new ByteArrayOutputStream();
  9. //读取数据的缓冲区
  10. byte buffer[]=new byte[1024];
  11. //读取记录的长度
  12. int len=0;
  13. while((len=is.read(buffer))!=-1){
  14. bops.write(buffer, 0, len);
  15. }
  16. //把读取的内容转换成byte数组
  17. byte data[]=bops.toByteArray();
  18. return data;
  19. }
  20. }
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;
	}
}



注意:在这里还需要加权限问题

  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  2. <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值