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

简介: 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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
568 4
|
9月前
|
编解码 Java Android开发
安卓虚拟摄像头免root版,虚拟摄像头替换真实摄像头,jar代码开源分享
通过动态替换摄像头输入流的方式实现虚拟摄像头功能,代码经过简化展示核心逻辑。实际开发中还需要考虑视频编解码优化
|
11月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
497 3
Android利用selector(选择器)实现图片动态点击效果
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
260 2
|
11月前
|
Java Android开发
Android图片的手动放大缩小
本文介绍了通过缩放因子实现图片放大缩小的功能,效果如动图所示。关键步骤包括:1) 在布局文件中设置 `android:scaleType=&quot;matrix&quot;`;2) 实例化控件并用 `ScaleGestureDetector` 处理缩放手势;3) 使用 `Matrix` 对图片进行缩放处理。为避免内存崩溃,可在全局配置添加 `android:largeHeap=&quot;true&quot;`。代码中定义了 `beforeScale` 和 `nowScale` 变量控制缩放范围,确保流畅体验。
352 8
|
11月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
420 1
|
11月前
|
消息中间件 Android开发
Android Handler的使用方式以及其机制的简单介绍
Handler 是 Android 中实现线程间通信的重要机制,可传递任意两线程数据。常用场景包括子线程向主线程(UI 线程)传递结果,以及主线程向子线程发送消息。其核心涉及四个类:Handler(发送/接收消息)、Message(消息载体)、MessageQueue(消息队列)和 Looper(消息循环泵)。基本流程为:Handler 发送 Message 至 MessageQueue,Looper 从队列中按 FIFO 取出并处理。
329 0
|
搜索推荐 算法 数据挖掘
淘口令真实URL API接口的应用与收益
淘口令作为电商推广利器,通过简短文本引导用户直达商品页,提升购物体验与销售效率。本文探讨淘口令真实URL API接口的应用,包括商品推广、数据分析、跨境电商及社交媒体营销等方面,揭示其在电商领域的巨大潜力与收益。
312 1
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
415 1