Android 网络图片查看显示的实现方法

XUXU199402

XUXU199402

2016-02-19 10:21

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐Android 网络图片查看显示的实现方法,赶紧看过来吧!

我们的应用或多或少都会从网络获取图片数据然后进行显示,下面就将实现一个这样的例子,获取网络中的图片!

首先:我们来看一下效果图

界面中有三个控件,一个EditText,一个Button,一个ImageView

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

1、下面是具体布局文件

EditText
  android:id="@+id/picturepagh"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello_world" /

Button
  android:id="@+id/btn"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="查看" /

ImageButton
  android:id="@+id/imageView"
  android:layout_width="fill_parent"
  android:layout_height="200px" /

2、在MainActivity中进行图片图示代码编写

public class MainActivity extends Activity {
 private Button btn;
 private EditText path;
 private ImageView imgview;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  btn = (Button) findViewById(R.id.btn);
  path = (EditText) findViewById(R.id.picturepagh);
  imgview = (ImageView) findViewById(R.id.imageView);

  btn.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Log.i("CLICK", ((Button) v).getText().toString());
    new Thread(runa).start();
   }
  });
 }

 public void setView() {
  String picturepath = path.getText().toString();
  byte[] data = null;
  try {
   data = ImageService.getImage(picturepath);
   Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// BitmapFactory:图片工厂!
   Looper.prepare();// 必须调用此方法,要不然会报错
   Message msg = new Message();
   msg.what = 0;
   msg.obj = bitmap;
   handler.sendMessage(msg);
  } catch (Exception e) {
   Toast.makeText(getApplicationContext(), "获取图片错误", 1).show();
  }
 }

 private Handler handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   if (msg.what == 0) {
    updateImageView((Bitmap) msg.obj);
   }
  }

 };

 private Runnable runa = new Runnable() {
  @Override
  public void run() {
   setView();
  }
 };

 private void updateImageView(Bitmap bm) {
  imgview.setImageBitmap(bm);
 }
}

 3、添加一个ImageService图片服务类,里面包含一个获取网络数据的方法;

public class ImageService {

 // 获取网络图片的数据
 public static byte[] getImage(String picturepath) throws Exception {
  URL url = new URL(picturepath);
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象
  conn.setConnectTimeout(10);// 10秒;
  conn.setRequestMethod("GET");// 大写
  if (conn.getResponseCode() == 200) {
   InputStream ins = conn.getInputStream();
   return StreamTool.read(ins);
  }
  return null;
 }
}

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

 4、添加一个流处理工作类StreamTool

public class StreamTool {

 public static byte[] read(InputStream ins) throws Exception {
  ByteArrayOutputStream outstream = new ByteArrayOutputStream();
  byte[] buffer = new byte[1024];
  int length = 0;
  while ((length = ins.read(buffer)) -1) {
   outstream.write(buffer, 0, length);
  }
  outstream.close();
  return outstream.toByteArray();
 }
}

 5、大功告成?NO,还要添加网络访问权限: uses-permission android:name="android.permission.INTERNET" /

 OK,运行程序!

展开更多 50%)
分享

猜你喜欢

Android 网络图片查看显示的实现方法

编程语言 网络编程
Android 网络图片查看显示的实现方法

Android实现图片循环播放的实例方法

编程语言 网络编程
Android实现图片循环播放的实例方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

iOS开发中实现显示gif图片的方法

编程语言 网络编程
iOS开发中实现显示gif图片的方法

android Imageview 图片覆盖具体实现

编程语言 网络编程
android Imageview 图片覆盖具体实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

android 检查网络连接状态实现步骤

编程语言 网络编程
android 检查网络连接状态实现步骤

Android 图片缩放与旋转的实现详解

编程语言 网络编程
Android 图片缩放与旋转的实现详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10系统怎么设置WPS为默认打开工具

Win10系统怎么设置WPS为默认打开工具

Windows 7系统映像备份还原功能

Windows 7系统映像备份还原功能
下拉加载更多内容 ↓