Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 1 布局文件, <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"    


1 布局文件,

<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_icon"

        android:layout_width="fill_parent"

        android:layout_height="0dip"

        android:layout_weight="1" />

 

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal" >

 

        <EditText

            android:id="@+id/et_url"

            android:layout_width="0dip"

            android:text="http://img0.hao123.com/data/1_489a5f7dfbcbb624a231f372e4bdffce_310"

            android:layout_height="wrap_content"

            android:singleLine="true"

            android:layout_weight="1" />

 

        <Button

            android:id="@+id/btn_submit"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="Go"

            android:textSize="20sp" />

    </LinearLayout>

 

</LinearLayout>

Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。

package com.itheim28.submitdata;

 

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

 

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

 

public class MainActivity extends Activity implements OnClickListener {

 

    private static final String TAG = "MainActivity";

    protected static final int ERROR = 1;

    private EditText etUrl;

    private ImageView ivIcon;

    private final int SUCCESS = 0;

   

    private Handler handler = new Handler() {

       public void handleMessage(Message msg) {

           super.handleMessage(msg);

          

           Log.i(TAG, "what = " + msg.what);

           if (msg.what == SUCCESS) {

              ivIcon.setImageBitmap((Bitmap)msg.obj);

           } else if (msg.what == ERROR) {

              Toast.makeText(MainActivity.this, "抓起失败", 0).show();

           }

       }

    };

   

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

      

       ivIcon = (ImageView) findViewById(R.id.iv_icon);

       etUrl = (EditText) findViewById(R.id.et_url);

      

       findViewById(R.id.btn_submit).setOnClickListener(this);

    }

 

    @Override

    public void onClick(View v) {

       final String url = etUrl.getText().toString();

      

       new Thread(new Runnable() {

 

           @Override

           public void run() {

              Bitmap bitmap = getImageFromNet(url);

 

//            ivIcon.setImageBitmap(bitmap);     // 设置imageView显示的图片

              if(bitmap != null) {

                  Message msg = new Message();

                  msg.what = SUCCESS;

                  msg.obj = bitmap;

                  handler.sendMessage(msg);

              } else {

                  Message msg = new Message();

                  msg.what = ERROR;

                  handler.sendMessage(msg);

              }

           }}).start();

      

    }

   

    /**

     * 根据url连接取网络抓去图片返回

     * @param url

     * @return url对应的图片

     */

    private Bitmap getImageFromNet(String url) {

       HttpURLConnection conn = null;

       try {

           URL mURL = new URL(url); // 创建一个url对象

          

           // 得到http的连接对象

           conn = (HttpURLConnection) mURL.openConnection();

          

           conn.setRequestMethod("GET");      // 设置请求方法为Get

           conn.setConnectTimeout(10000);     // 设置连接服务器的超时时间, 如果超过10秒钟, 没有连接成功, 会抛异常

           conn.setReadTimeout(5000);      // 设置读取数据时超时时间, 如果超过5, 抛异常

          

           conn.connect();      // 开始链接

          

           int responseCode = conn.getResponseCode(); // 得到服务器的响应码

           if(responseCode == 200) {

              // 访问成功

              InputStream is = conn.getInputStream();   // 获得服务器返回的流数据

             

              Bitmap bitmap = BitmapFactory.decodeStream(is); // 根据 流数据 创建一个bitmap位图对象

             

              return bitmap;

           } else {

              Log.i(TAG, "访问失败: responseCode = " + responseCode);

           }

       } catch (Exception e) {

           e.printStackTrace();

       } finally {

           if(conn != null) {

              conn.disconnect();       // 断开连接

           }

       }

       return null;

    }

}

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
26天前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
57 4
|
10天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
10天前
|
存储 搜索推荐 Java
打造个性化安卓应用:从设计到实现
【10月更文挑战第30天】在数字化时代,拥有一个个性化的安卓应用不仅能够提升用户体验,还能加强品牌识别度。本文将引导您了解如何从零开始设计和实现一个安卓应用,涵盖用户界面设计、功能开发和性能优化等关键环节。我们将以一个简单的记事本应用为例,展示如何通过Android Studio工具和Java语言实现基本功能,同时确保应用流畅运行。无论您是初学者还是希望提升现有技能的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧。
|
14天前
|
搜索推荐 开发工具 Android开发
打造个性化Android应用:从设计到实现的旅程
【10月更文挑战第26天】在这个数字时代,拥有一个能够脱颖而出的移动应用是成功的关键。本文将引导您了解如何从概念化阶段出发,通过设计、开发直至发布,一步步构建一个既美观又实用的Android应用。我们将探讨用户体验(UX)设计的重要性,介绍Android开发的核心组件,并通过实际案例展示如何克服开发中的挑战。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧,帮助您在竞争激烈的应用市场中脱颖而出。
|
16天前
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
26 2
|
20天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
46 5
|
20天前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
|
14天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
消息中间件 存储 机器学习/深度学习
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(二)
139 0
|
消息中间件 存储 调度
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
【Android】Handler 机制 ( Handler | Message | Looper | MessageQueue )(一)
176 0

热门文章

最新文章