我有一个奇怪的问题,
我有一个活动,在这个活动中我有一个布局,我想制作它的图像以便在社交网络上分享它。此布局包含不同的动态图像和文本。这就是为什么我不能将其存储为静态图像并按需共享。当用户触摸共享按钮时,我需要立即生成图像。
问题是我需要在分享之前调整布局,我该怎么办?
ImageView profilPic = (ImageView)dashboardView.findViewById(R.id.profilePic);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)profilPic.getLayoutParams();
params.setMargins(10, 62, 0, 0);
profilPic.invalidate();
profilPic.requestLayout();
首先我修改布局的边距,然后制作它的图像
Bitmap bitmap = null;
try {
bitmap = Bitmap.createBitmap(dashboardView.getWidth(),
dashboardView.getHeight(), Bitmap.Config.ARGB_4444);
dashboardView.draw(new Canvas(bitmap));
} catch (Exception e) {
// Logger.e(e.toString());
}
FileOutputStream fileOutputStream = null;
File path = Environment
.getExternalStorageDirectory();
File file = new File(path, "wayzupDashboard" + ".png");
try {
fileOutputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
bitmap.compress(CompressFormat.PNG, 100, bos);
try {
bos.flush();
bos.close();
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
最后我分享一下。
基本上它可以工作,除了它在使用修改后的 layoutParams 重绘布局之前捕获布局。我只需要在重新绘制布局后考虑到新的布局参数时才捕获此布局。
如果我删除了捕获代码,它就可以正常工作,当我触摸共享按钮时,我看到布局正在移动。但是当我有捕获代码时,它只是在修改边距之前捕获布局。
如何确保在捕获之前重绘布局?