android 图片浏览器 布局,Android实现网络图片浏览器

本文实例为大家分享了Android网络图片浏览器的制作过程,供大家参考,具体内容如下

一、创建一个“网络图片浏览器的应用程序”,并设计用户交互界面,“网络图片浏览器”对应的布局文件(activity_main.xml)代码如下:

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:orientation="vertical"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.bz0209.myapplication.MainActivity">

android:layout_weight="1000"

android:id="@+id/iv"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

android:singleLine="true"

android:id="@+id/et_path"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="http://b.hiphotos.baidu.com/image/w%3D310/sign=a439f5b24510b912bfc1f0fff3fdfcb5/83025aafa40f4bfb92c52c5d014f78f0f73618a5.jpg"

android:hint="请输入图片路径"

/>

android:onClick="click"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="浏览"

/>

效果图如下:

ec23e49c8e75ba694ecc0fce01f1862f.png

二、编写界面交互代码(MainActivity),当界面创建好后,需要在MainActivity里面编写与界面交互的代码。用于实现请求指定地址的网络图片,并将服务器返回的图片展现在界面上。具体代码如下:

package com.example.bz0209.myapplication;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.text.TextUtils;

import android.view.View;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

public class MainActivity extends AppCompatActivity {

protected static final int CHANGE_UI=1;

protected static final int ERROR=2;

private EditText et_path;

private ImageView iv;

//主线创建消息处理器

private Handler handler=new Handler(){

public void handleMessage(android.os.Message msg){

if (msg.what==CHANGE_UI){

Bitmap bitmap=(Bitmap)msg.obj;

iv.setImageBitmap(bitmap);

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

et_path=(EditText)findViewById(R.id.et_path);

iv=(ImageView) findViewById(R.id.iv);

}

public void click(View view){

final String path=et_path.getText().toString().trim();

if (TextUtils.isEmpty(path)){

Toast.makeText(this,"图片路径不能为空",0).show();

}

else {

//子线程请求网络,Android 4.0以后访问网络不能放在子线程中

new Thread(){

private HttpURLConnection conn;

private Bitmap bitmap;

public void run(){

//链接服务器get请求,获取图片

try{

//创建URL对象

URL url =new URL(path);

conn=(HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setConnectTimeout(5000);

conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatib;MSIE 6.0;Window NT 5.1;"+"SV1;" +

".NET4.0C;.NET4.0E;NET CLK 2.0.50727;"+".NET CLR 3.0..4506.2152;.NET CLR 3.5.30729; Shuame )");

int code=conn.getResponseCode();

if(code==200){

InputStream is=conn.getInputStream();

bitmap= BitmapFactory.decodeStream(is);

Message msg=new Message();

msg.what=CHANGE_UI;

msg.obj=bitmap;

handler.sendMessage(msg);

}

else {

Message msg=new Message();

msg.what=ERROR;

handler.sendMessage(msg);

}

}catch (Exception e){

e.printStackTrace();

Message msg=new Message();

msg.what=ERROR;

}

}

}.start();

}

}

}

三、添加权限:由于网络图片浏览器需要请求网络,因此需要在清单文件中配置相应的权限,具体操作如下图所示:

fa1d2011628dcfd65d65f04ef8f5994c.png

四、运行浏览图片 ,结果图如下:

5ad34c1bfe66d13d71580f48a4ed0e49.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值