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从业者体验企业级架构的实战训练。
目录
相关文章
|
1天前
|
存储 设计模式 监控
88 PM撸代码之【Android四大基本组件】
88 PM撸代码之【Android四大基本组件】
8 0
|
1天前
|
移动开发 Android开发 UED
构建高效Android应用:探究Kotlin协程的优势与实践
【5月更文挑战第17天】 在移动开发领域,尤其是针对Android平台,性能优化和流畅的用户体验始终是开发者追求的目标。Kotlin作为一种现代的编程语言,自引入Android开发以来,其简洁、安全和互操作性的特点受到广泛欢迎。特别是Kotlin协程的推出,为解决Android平台上的并发编程问题提供了新的思路。本文将深入探讨Kotlin协程的核心优势,并通过实例展示如何在Android应用中有效利用协程来提高响应性和稳定性,从而改善整体的用户体验。
|
1天前
|
Java Android开发
82 PM撸代码之Android【绝顶高手排行榜】
82 PM撸代码之Android【绝顶高手排行榜】
6 0
|
1天前
|
达摩院 安全 Java
80 PM撸代码之Android【武侠讲封装、继承、多态】
80 PM撸代码之Android【武侠讲封装、继承、多态】
7 0
|
1天前
|
算法 Java BI
79 PM撸代码之Android【武侠篇:面向对象基础】
79 PM撸代码之Android【武侠篇:面向对象基础】
6 0
|
1天前
|
XML 编解码 算法
76 PM撸代码之Android【宏观篇】
76 PM撸代码之Android【宏观篇】
7 0
|
1天前
|
移动开发 API Android开发
构建高效Android应用:探究Kotlin协程的优势与实践
【5月更文挑战第17天】在移动开发领域,性能优化和流畅的用户体验一直是开发者追求的目标。针对Android平台,Kotlin语言凭借其简洁性和功能丰富性成为了许多开发者的首选。其中,Kotlin协程作为异步编程的强大工具,为处理并发任务提供了轻量级的解决方案。本文深入探讨了Kotlin协程的核心优势,并通过实例分析其在Android开发中的应用,旨在帮助开发者提升应用的性能和响应能力。
|
1天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
1天前
|
数据库 Android开发 开发者
打造高效Android应用:Kotlin协程的全面应用
【5月更文挑战第17天】随着移动开发技术的不断进步,开发者寻求更高效的编程模式来提升应用性能和用户体验。本文深入探讨了Kotlin协程在Android开发中的应用,揭示了如何利用这一现代并发解决方案来简化异步编程,提升应用响应速度,并确保用户界面的流畅性。通过实例分析,我们将展示Kotlin协程如何与Android框架无缝集成,以及它们在处理网络请求、数据库操作和耗时任务时的优势。
8 1
|
1天前
|
移动开发 Android开发 开发者
构建高效Android应用:探究Kotlin协程的优势与实践
【5月更文挑战第17天】 在移动开发领域,尤其是针对Android平台,性能优化和流畅的用户体验始终是开发者追求的目标。近年来,Kotlin语言因其简洁性和功能性而成为Android开发的热门选择。其中,Kotlin协程作为一种轻量级的线程管理方案,为编写异步代码提供了强大支持,使得处理并发任务更加高效和容易。本文将深入探讨Kotlin协程的核心优势,并通过具体实例展示如何在Android应用中有效利用协程来提升性能和用户体验。