Android实现图片查看器代码如下:
public class MainActivity extends Activity implements OnClickListener{
private EditText et_url;
private Button btn_show;
private ImageView iv_pic;
/**
* 成功获取数据
*/
private final int GET_DATA_SUCESS = 1;
private final int NETWORK_ERROR = 2;
private final int SERVER_ERROR = 3;
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case GET_DATA_SUCESS:
Bitmap bm = (Bitmap) msg.obj;
iv_pic.setImageBitmap(bm);
Toast.makeText(MainActivity.this, "从网络获取数据", Toast.LENGTH_SHORT).show();
break;
case NETWORK_ERROR:
Toast.makeText(MainActivity.this, "网络连接异常", Toast.LENGTH_SHORT).show();
break;
case SERVER_ERROR:
Toast.makeText(MainActivity.this, "服务器返回异常", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.et_url);
btn_show = (Button) findViewById(R.id.btn_show);
iv_pic = (ImageView) findViewById(R.id.iv_pic);
et_url.setText("http://10.0.2.2:8080/tomcat1.png");
btn_show.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//
final File file = new File(getCacheDir(),"tomcat.png");
if(file != null&&file.length()>0){
Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath());
iv_pic.setImageBitmap(bm);
Toast.makeText(this, "使用缓存", Toast.LENGTH_SHORT).show();
return;
}
new Thread(){
public void run() {
//①获取网址
String path = et_url.getText().toString().trim();
//②联网
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置请求方式
connection.setRequestMethod("GET");
//设置连接超时时间
connection.setConnectTimeout(10000);
int code = connection.getResponseCode();
if(code==200){
//获取流
InputStream inputStream = connection.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
int len = -1;
byte buffer[] = new byte[1024];
while((len = inputStream.read(buffer))!=-1){
fos.write(buffer, 0, len);
}
fos.close();
inputStream.close();
//通过流创建一个bitmap对象
//Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
//iv_pic.setim
//创建消息
Message msg = Message.obtain();
//通过消息携带bitmap在主线程中展示
msg.what = GET_DATA_SUCESS;
msg.obj = bitmap;
//通过handler发送消息给主线程
handler.sendMessage(msg);
}else{
Message msg = Message.obtain();
msg.what = SERVER_ERROR;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = Message.obtain();
msg.what = NETWORK_ERROR;
handler.sendMessage(msg);
}
//③获取图片
//展示图片
};
}.start();
}
}
以上代码包含了查看图片以及下载图片,而下面的java代码主要是查看图片,不是下载图片。
public class MainActivity extends AppCompatActivity {
private EditText et_url;
private Button btn_show;
private ImageView iv_pic;
private final int GET_DATA_SUCESS = 1;
private final int NETWORK_ERROR = 2;
private final int SERVER_ERROR = 3;
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what) {
case GET_DATA_SUCESS:
Bitmap bm = (Bitmap) msg.obj;
iv_pic.setImageBitmap(bm);
Toast.makeText(MainActivity.this, "图片是", Toast.LENGTH_SHORT).show();
break;
case NETWORK_ERROR:
Toast.makeText(MainActivity.this, "网址异常", Toast.LENGTH_SHORT).show();
break;
case SERVER_ERROR:
Toast.makeText(MainActivity.this, "服务器错误", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_url = (EditText) findViewById(R.id.et_url);
btn_show = (Button) findViewById(R.id.btn_show);
iv_pic = (ImageView) findViewById(R.id.iv_pic);
et_url.setText("http://192.168.0.100/images/index_banner4.jpg");
btn_show.setOnClickListener(new MyonClicklistener());
}
private class MyonClicklistener implements View.OnClickListener {
@Override
public void onClick(View v){
new Thread(){
public void run(){
String path = et_url.getText().toString().trim();
URL url = null;
try {
url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(10000);
int code = connection.getResponseCode();
if(code==200){
InputStream inputStream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Message msg = new Message();
msg.what = GET_DATA_SUCESS;
msg.obj=bitmap;
handler.sendMessage(msg);
//tv_code.setText(result);
}else{
Message msg = Message.obtain();
msg.what = SERVER_ERROR;
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg = Message.obtain();
msg.what = NETWORK_ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
}
}