Android实现网络图片浏览功能

 更新时间:2017年06月03日 14:32:19   作者:qq_32303793  
这篇文章主要为大家详细介绍了Android实现网络图片浏览功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

基本布局很简单,只需要有一个输入图片链接的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设备有多个屏幕,双屏异显应用场景最多的应该就是类似于收银平台那种设备,在主屏上店员能够对点商品进行选择录入,副屏则是展示给我们的账单详情,但是它只通过了一个软件系统就实现了双屏异显这个功能,而Presentation正是这其中的关键
    2023-01-01
  • android 仿微信聊天气泡效果实现思路

    android 仿微信聊天气泡效果实现思路

    微信聊天窗口的信息效果类似iphone上的短信效果,以气泡的形式展现,实现这种效果主要用到ListView和BaseAdapter,配合布局以及相关素材,接下来为大家介绍下如何实现
    2013-04-04
  • Android Studio出现Failed to pull selection: open failed: Permission denied的解决思路

    Android Studio出现Failed to pull selection: open failed: Permi

    本篇文章给大家分享了Android Studio中导出数据库文件的方法以及出现Failed to pull selection: open failed: Permission denied的解决思路,有兴趣的学习下。
    2018-05-05
  • Flutter多选按钮组件Checkbox使用方法详解

    Flutter多选按钮组件Checkbox使用方法详解

    这篇文章主要为大家详细介绍了Flutter多选按钮组件Checkbox使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 解析android中系统日期时间的获取

    解析android中系统日期时间的获取

    本篇文章是对在android中,如何系统日期时间获取的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android 搜索框架使用详解

    Android 搜索框架使用详解

    这篇文章主要为大家介绍了Android 搜索框架使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android小组件添加到主屏幕(手机桌面)的方法实例

    Android小组件添加到主屏幕(手机桌面)的方法实例

    很多在多年前使用过Android手机的朋友,可能对于Android 4.0时代盛行的桌面小组件功能有着很深的印象,下面这篇文章主要给大家介绍了关于Android小组件添加到主屏幕(手机桌面)的相关资料,需要的朋友可以参考下
    2023-06-06
  • Android利用zxing生成二维码的过程记录

    Android利用zxing生成二维码的过程记录

    Android中二维码生成的最常用库就是zxing了,正好目前项目有了生成二维码的需求,所以下面这篇文章主要给大家介绍了关于Android利用zxing生成二维码的相关资料,需要的朋友可以参考下
    2021-07-07
  • android读取扫码模组数据的方法

    android读取扫码模组数据的方法

    这篇文章主要为大家详细介绍了android读取扫码模组数据的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Android HttpClient GET或者POST请求基本使用方法

    Android HttpClient GET或者POST请求基本使用方法

    在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.这里只介绍如何使用HttpClient发起GET或者POST请求
    2012-12-12

最新评论