Android实现网络图片浏览功能

发布时间 - 2026-01-11 01:42:32    点击率:

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

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

基本布局很简单,只需要有一个输入图片链接的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网络图片浏览功  # Android图片浏览  # Android 网络图片查看显示的实现方法  # Android读取本地或网络图片并转换为Bitmap  # Android 异步获取网络图片并处理导致内存溢出问题解决方法  # Android显示网络图片实例  # Android 下载网络图片并显示到本地  # 简单实现Android读取网络图片到本地  # Android使用线程获取网络图片的方法  # 在Android的应用中实现网络图片异步加载的方法  # Android 读取sdcard上的图片实例(必看)  # Android sdcard实现图片存储 、联网下载  # Android开发实现加载网络图片并下载至本地SdCard的方法  # 的是  # 让我们  # 之处  # 最重要  # 它是  # 那你  # 很简单  # 请输入  # 便可  # 只需要  # 越大  # 这里面  # 大家多多  # 就差  # 如何实现  # 为空  # 可以分为  # 过程中  # 就让我们  # 有一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel中的Facade(门面)到底是什么原理  java中使用zxing批量生成二维码立牌  如何实现建站之星域名转发设置?  Laravel如何使用.env文件管理环境变量?(最佳实践)  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何快速搭建个人网站并优化SEO?  iOS正则表达式验证手机号、邮箱、身份证号等  如何在云指建站中生成FTP站点?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  想要更高端的建设网站,这些原则一定要坚持!  潮流网站制作头像软件下载,适合母子的网名有哪些?  米侠浏览器网页背景异常怎么办 米侠显示修复  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  php 三元运算符实例详细介绍  如何快速重置建站主机并恢复默认配置?  Python进程池调度策略_任务分发说明【指导】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  浅述节点的创建及常见功能的实现  香港服务器租用费用高吗?如何避免常见误区?  如何登录建站主机?访问步骤全解析  Laravel怎么实现验证码(Captcha)功能  制作公司内部网站有哪些,内网如何建网站?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  如何用wdcp快速搭建高效网站?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  南京网站制作费用,南京远驱官方网站?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  ,怎么在广州志愿者网站注册?  详解Huffman编码算法之Java实现  如何在腾讯云服务器快速搭建个人网站?  七夕网站制作视频,七夕大促活动怎么报名?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  公司网站制作价格怎么算,公司办个官网需要多少钱?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  android nfc常用标签读取总结  如何快速生成凡客建站的专业级图册?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  移动端脚本框架Hammer.js  如何快速辨别茅台真假?关键步骤解析