开始写查询服务器相册前端的代码,写前端代码碰到的问题就会比后端多很多啊,相册列表页面怎么布局,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; } }
