[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(); 
            } 
        } 
    } 
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/5483.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论