1.drawable轉Bitmap
private Bitmap drawable2Bitmap(Drawable drawable) {
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof NinePatchDrawable) {
Bitmap bitmap = Bitmap
.createBitmap(
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(),
drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
} else {
return null;
}
}
2.消息曝光即已讀時消息列表如何已讀、未讀區分
分頁方式:
- 客戶端傳遞page給後端 後端根據page查詢數據
- 客戶端傳遞上一次最後一條數據id,後端根據id查詢該id前\後pageSize條數據
方式 1
可以發現由於數據源實時的改變導致通過頁碼來拉取數據時會出現錯誤
方式 2
可以發現由於數據源實時的改變導致通過最後id來拉取數據時會出現錯誤 舉例中應爲id是順序排列的(可能出現未讀id大於已讀id 或者亂序)所以導致結果看着一樣 實質上兩者差別很大
解決方案
採用方式2 但是每次請求把上一次lastId和該消息已讀未讀的狀態傳遞給後端這樣在查詢的時候把狀態也做爲條件之一就可以解決問題