zoukankan      html  css  js  c++  java
  • [android] 网络图片查看器

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

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

    singleLine属性 单行

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

    获取EditText对象,通过findViewById()

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

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

    发送get请求

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

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

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

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

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

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

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

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

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

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

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

    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();
                }
            }
        }
    }
  • 相关阅读:
    字符串中去除连续相同的字符保留一个
    截取字符串中最后一个中文词语(MS SQL)
    WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'. Please add a ScriptResourceMapping named jquery(case-sensitive).
    Unexpected error from external database driver (1)
    RDLC报表显示存储于数据库的图片
    从angularjs传递参数至Web API
    angularjs呼叫Web API
    创建Web API并使用
    打印网页中某一段内容
    在angularjs实现一个时钟
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5285425.html
Copyright © 2011-2022 走看看