listview长截图,小米手机和华为手机效果不同。

春华-秋实 2019-06-12 04:15:09
通过如下代码进行长截图,在华为手机截图效果正常,但是oppo和小米手机的效果就是不对的。
public static Bitmap shotListView(ListView listview) {

ListAdapter adapter = listview.getAdapter();
int itemscount = adapter.getCount();
int allitemsheight = 0;
int bigbitmapwidth = 0;
List<Bitmap> bmps = new ArrayList<Bitmap>();

for (int i = 0; i < itemscount - 1; i++) {
View childView = adapter.getView(i, null, listview);

childView.measure(
View.MeasureSpec.makeMeasureSpec(listview.getMeasuredWidth(), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
childView.layout(0, 0, childView.getMeasuredWidth(), childView.getMeasuredHeight());
childView.setDrawingCacheEnabled(true);
childView.buildDrawingCache();

bmps.add(childView.getDrawingCache());
allitemsheight += childView.getMeasuredHeight();
}
bigbitmapwidth = listview.getMeasuredWidth();
Bitmap bigbitmap = Bitmap.createBitmap(bigbitmapwidth, allitemsheight, Bitmap.Config.ARGB_8888);
Canvas bigcanvas = new Canvas(bigbitmap);
bigcanvas.drawColor(Color.BLUE);

Paint paint = new Paint();
int iHeight = 0;

for (int i = 0; i < bmps.size(); i++) {
Bitmap bmp = bmps.get(i);
bigcanvas.drawBitmap(bmp, 0, iHeight, paint);
iHeight += bmp.getHeight();
bmp.recycle();
bmp = null;
}
return bigbitmap;
}


华为手机上截图效果:

小米手机上截图效果:

白色部分是我在listview添加的headerview。
蓝色背景是为了查看截图效果添加的。
求大神指点:
1.为什么小米手机上drawbitmap的宽度与测量出来的不同?
2.为什么小米手机上listview第一项和headerview之间还有间隔?
请大神指点,万分感激。
...全文
436 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43073307 2019-06-17
  • 打赏
  • 举报
回复
好的,可以有效使用
春华-秋实 2019-06-13
  • 打赏
  • 举报
回复
对比看后发现,单个view的截图是ok的,在draw到大图上的时候可能出错了,再看,有大神看到请救救孩子。
春华-秋实 2019-06-13
  • 打赏
  • 举报
回复
已解决,还是得靠自己
春华-秋实 2019-06-12
  • 打赏
  • 举报
回复
自己顶顶,还在摸索中,感觉像是计算的children高度每次都少点。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧