热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android实现网络图片浏览功能

这篇文章主要为大家详细介绍了Android实现网络图片浏览功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

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



  

  

  

值得注意的是这里面的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,获取服务器返回的输入流

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

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


推荐阅读
  • 本文详细介绍了JSP(Java Server Pages)的九大内置对象及其功能,探讨了JSP与Servlet之间的关系及差异,并提供了实际编码示例。此外,还讨论了网页开发中常见的编码转换问题以及JSP的两种页面跳转方式。 ... [详细]
  • Eclipse 中 JSP 开发环境配置指南
    本文详细介绍了如何在 Eclipse 集成开发环境中配置 JSP 运行环境,包括必要的软件下载、Tomcat 服务器的配置以及常见问题的解决方法。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 本文详细介绍了如何在Android应用中使用GridView组件以网格形式展示数据(如文本和图像)。通过行列布局,实现类似矩阵的数据展示效果。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
  • Android中实现复合旋转动画效果
    本文将探讨如何在Android应用中实现动态且吸引人的旋转动画。通过结合多种动画类型,如透明度变化、旋转、缩放和位移,可以创造出更为复杂的视觉效果。我们将从XML布局和Java代码两个方面进行详细介绍。 ... [详细]
  • HTTPS与TLS/SSL协议详解:握手及记录协议
    HTTPS,即HTTP over TLS/SSL,通过在HTTP通信层引入安全协议,确保数据传输的安全性。本文将深入探讨TLS/SSL协议的基本概念、HTTPS的必要性,以及TLS握手和记录协议的工作原理。 ... [详细]
  • 应对.avast后缀勒索病毒:全面指南
    本文详细介绍了.avast后缀勒索病毒的特性、感染途径、恢复方法及预防措施,旨在帮助用户有效应对这一威胁。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 推荐两款实用的网络诊断工具
    大家好,因为一些私事很久没有更新博客了。今天向大家介绍两款非常有用的网络诊断工具——Tracert和Telnet,帮助你更好地理解和解决网络问题。 ... [详细]
  • 深入理解Python编程
    本文探讨了作者在学习Python过程中遇到的挑战和转折点,以及如何通过找到合适的资源和方法来提升编程技能。对于初学者来说,这不仅是一个学习的过程,也是一个自我发现和调整学习策略的过程。 ... [详细]
author-avatar
袁冠芳彦源
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有