欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现网络图片浏览功能

程序员文章站 2023-11-26 19:03:10
我们在上网的过程中经常看到各种图片,那你知道它是如何实现的吗?接下来就让我们一块探讨一下。 网络图片的浏览可以分为俩部分,基本的页面布局与界面交互,让我们一步步的来...

我们在上网的过程中经常看到各种图片,那你知道它是如何实现的吗?接下来就让我们一块探讨一下。

网络图片的浏览可以分为俩部分,基本的页面布局与界面交互,让我们一步步的来编写。

基本布局很简单,只需要有一个输入图片链接的edittext,一个浏览按钮,一个imageview就差不多了。下面是简单代码。

<linearlayout 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:orientation="vertical"
  tools:context=".mainactivity" >

  <imageview
    android:id="@+id/iv"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" />

  <edittext
    android:id="@+id/et_path"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="请输入图片路径"
    android:maxlines="1" />

  <button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onclick="click"
    android:text="浏览" />

</linearlayout>

值得注意的是这里面的weight不是权重,而是渲染优先级,weight越大,优先级越低。

最重要的自然是界面交互,输入图片的指定地址,便可以将服务器返回的图片展示在界面上,具体如下

package cn.edu.bzu.imageviewdemo;

import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.os.bundle;
import android.os.handler;
import android.os.message;
import android.support.v7.app.appcompatactivity;
import android.text.textutils;
import android.view.view;
import android.widget.edittext;
import android.widget.imageview;
import android.widget.toast;

import java.io.inputstream;
import java.net.httpurlconnection;
import java.net.url;
public class mainactivity extends appcompatactivity {

 protected static final int change_ui = 1;
 protected static final int error = 2;
 private edittext et_path;
 private imageview iv;
 private handler handler = new handler(){
  public void handlemessage(android.os.message msg) {
   if(msg.what == change_ui){
    bitmap bitmap = (bitmap) msg.obj;
    iv.setimagebitmap(bitmap);
   }else if(msg.what == error){
    toast.maketext(mainactivity.this, "显示图片错误", 0).show();
   }
  };
 };
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  et_path = (edittext) findviewbyid(r.id.et_path);
  iv = (imageview) findviewbyid(r.id.iv);
 }
 public void click(view view) {
  final string path = et_path.gettext().tostring().trim();
  if (textutils.isempty(path)) {
   toast.maketext(this, "图片路径不能为空", toast.length_short).show();
  } else {
   new thread() {
    public void run() {

     try {
      url url = new url(path);  //创建url对象

      httpurlconnection conn = (httpurlconnection) url
        .openconnection();
      // 设置请求的方式
      conn.setrequestmethod("get");
      //设置超时时间
      conn.setconnecttimeout(5000);

      int code = conn.getresponsecode();

      if (code == 200) {

       inputstream is = conn.getinputstream();

       bitmap bitmap = bitmapfactory.decodestream(is);
       //iv.setimagebitmap(bitmap);

       message msg = new message();
       msg.what = change_ui;
       msg.obj = bitmap;
       handler.sendmessage(msg);
      } else {

       message msg = new message();
       msg.what = error;
       handler.sendmessage(msg);
      }
     } catch (exception e) {
      e.printstacktrace();
      message msg = new message();
      msg.what = error;
      handler.sendmessage(msg);
     }
    };
   }.start();
  }
 }

}

核心之处便是通过url对象获取httpurlconnection,获取服务器返回的输入流

Android实现网络图片浏览功能

这便是简单的测试结果。有问题欢迎评论交流!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。