前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[android] 网络图片查看器

[android] 网络图片查看器

作者头像
唯一Chat
发布2019-09-10 11:19:25
1.6K0
发布2019-09-10 11:19:25
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

界面布局LinerLayout线性布局,ImageView控件,EditText控件 hint属性提示信息,Button控件。

Android:layout_weight=””属性,权重,只有控件的宽度和高度为0的时候才代表权重,否则它代表渲染的优先级,值越大优先级越低,默认是0,先渲染其他控件

singleLine属性 单行

业务逻辑,获取EditText的值放到ImageView里,实质上是http的get请求

获取EditText对象,通过findViewById()

获取值,通过调用EditText对象的getText()方法,调用toString()方法,调用trim()方法

调用TextUtils类的isEmpty()方法,判断是否为空,为空就Toast一下

发送get请求

获取Url对象,通过new Url(path),参数:path是String的路径,这里需要捕获异常

获取HttpUrlConnection对象,通过调用Url对象的openConnection()方法,返回UrlConnection对象,然后强制类型转换一下

调用HttpUrlConnection对象的setRequestMethod(method)方法,设置请求方法,method是GET

调用HttpUrlConnection对象的setConnectTimeout(millis),设置超时时间,millis是毫秒

调用HttpUrlConnection对象的setRequestProperty(field,newValue)方法,设置请求参数,比如请求头,User-Agent等

调用HttpUrlConnection对象的getResponseCode()方法,获取服务器的响应码,200 ok

调用HttpUrlConnection对象的getInputStream()方法,获取输入流,返回InputStream对象

调用BitmapFactory类的decodeStream(is)方法得到Bitmap对象,参数:is是InputStream对象

调用ImageView对象的setImageBitmap(bitmap)方法设置图片,参数:Bitmap对象

所有访问网络的都需要加权限android.permission.INTERNET

此时直接部署,会报一个错误NetworkOnMainThreadException,不允许在主线程上进行网络操作,下面的代码只在低版本时有效

代码语言:javascript
复制
package com.tsh.internetpic;

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.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {
    private EditText et_path;
    private ImageView iv_pic;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_path=(EditText) findViewById(R.id.et_path);
        iv_pic=(ImageView) findViewById(R.id.iv_pic);
    }
    public void getInternetImg(View v){
        String path=et_path.getText().toString().trim();
        if(TextUtils.isEmpty(path)){
            Toast.makeText(this, "图片路径不能为空", 0).show();
        }else{
            try {
                URL url=new URL(path);
                HttpURLConnection conn=(HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                conn.setRequestProperty("User-Agent", "");
                int code=conn.getResponseCode();
                if(code==200){
                    InputStream is=conn.getInputStream();
                    Bitmap bp=BitmapFactory.decodeStream(is);
                    iv_pic.setImageBitmap(bp);
                }else{
                    Toast.makeText(this, "网络连接超时", 0).show();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档