5.1总结

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.消息曝光即已读时消息列表如何已读、未读区分

分页方式:

  1. 客户端传递page给后端 后端根据page查询数据
  2. 客户端传递上一次最后一条数据id,后端根据id查询该id前\后pageSize条数据

方式 1

在这里插入图片描述
可以发现由于数据源实时的改变导致通过页码来拉取数据时会出现错误

方式 2

在这里插入图片描述
可以发现由于数据源实时的改变导致通过最后id来拉取数据时会出现错误 举例中应为id是顺序排列的(可能出现未读id大于已读id 或者乱序)所以导致结果看着一样 实质上两者差别很大

解决方案

采用方式2 但是每次请求把上一次lastId和该消息已读未读的状态传递给后端这样在查询的时候把状态也做为条件之一就可以解决问题

发布了81 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/xyzso1z/article/details/96867842
5.1