开始写查询服务器相册前端的代码,写前端代码碰到的问题就会比后端多很多啊,相册列表页面怎么布局,XML写好了,怎么处理后端返回的JSON数据,还有Android的各种限制,不能在主线程发起Url请求,然后Url请求返回的数据又不能在子线程中更新页面。。。反正就是不想让你优雅的实现功能了。
获取图片列表,JSON数据还没有解析完成,明天继续
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_server_album_list);
new Thread(new Runnable() {
@Override
public void run() {
String content = HttpAssist.getInstance().getImgList();
if (content!=null){
Log.i(TAG,"content.length="+content.length());
ResultData ret = KitJson.toResultData(content);
if (ret!=null){
Log.i(TAG,"ret.state="+ret.getState());
}
}
}
}).start();
}
public static ResultData toResultData(String json){
ResultData ret =new ResultData();
try {
JSONObject object = new JSONObject(json);
if (object!=null){
ret.setState(object.getInt("State"));
try {
ret.setData(object.getJSONArray("Data"));
}catch (RuntimeException e){
ret.setData(object.getJSONObject("Data"));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return ret;
}
ResultData.java 用来接收后端发来的JSON数据
package cn.cloudfk.taoalbum.data.dto;
import java.io.Serializable;
public class ResultData implements Serializable {
private Integer state;
private String msg;
private Object data;
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
ServerAlbumViewActivity.java 下载及显示图片,起一个线程下载图片,用一个循环监控下载结果。
package cn.cloudfk.taoalbum.activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import cn.cloudfk.taoalbum.R;
public class ServerAlbumViewActivity extends AppCompatActivity {
private ImageView imageview;
private Bitmap bitmap =null;
String imgUrl = null;
private static final String TAG = "ServerAlbumViewActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_server_album_view);
//server_image_view
boolean isDownloadImg = false;
imgUrl = "http://127.0.0.1:8000/show/1563332742538981600.jpg";
new Thread(new Runnable() {
@Override
public void run() {
try {
imageview = findViewById(R.id.server_image_view);
bitmap = getBitmap(imgUrl);
if (bitmap!=null){
Log.i(TAG,"heiget:"+ bitmap.getHeight());
Log.i(TAG,"width:"+ bitmap.getWidth());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
while (true){
try {
if (isDownloadImg){
break;
}
if (bitmap!=null ){
imageview = findViewById(R.id.server_image_view);
if (bitmap!=null){
Log.i(TAG,"heiget:"+ bitmap.getHeight());
Log.i(TAG,"width:"+ bitmap.getWidth());
imageview.setImageBitmap(bitmap);
imageview.setMaxHeight(bitmap.getHeight());
imageview.setMaxWidth(bitmap.getWidth());
}
isDownloadImg= true;
}
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private Bitmap getBitmap(String path) throws IOException {
try {
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
if (conn.getResponseCode() == 200) {
InputStream inputStream = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}