有谁知道强制刷新/绘制不可见布局的方法?
我有一个复杂的应用程序,其中一个布局目前可能不可见,但我们希望将其转换为位图并以另一个更小、缩放、可见的布局显示。
我可以轻松地将布局复制到位图,然后将该位图放入较小的可见窗口中的 ImageView 中。但我们遇到的问题是,如果视图在不可见窗口中被更改、删除或添加,Android 实际上并没有绘制它。因此,放置在较小可见布局中的获取位图是陈旧且静态的。
那么有没有办法强制不可见的布局重新绘制?
有谁知道强制刷新/绘制不可见布局的方法?
我有一个复杂的应用程序,其中一个布局目前可能不可见,但我们希望将其转换为位图并以另一个更小、缩放、可见的布局显示。
我可以轻松地将布局复制到位图,然后将该位图放入较小的可见窗口中的 ImageView 中。但我们遇到的问题是,如果视图在不可见窗口中被更改、删除或添加,Android 实际上并没有绘制它。因此,放置在较小可见布局中的获取位图是陈旧且静态的。
那么有没有办法强制不可见的布局重新绘制?
扩展LinearLayout
和覆盖onMeasure
功能,返回您的完整布局大小(屏幕上 + 屏幕外)。将此布局用作您的不可见布局
这段代码可能会让你开始..
public class YourLayout extends LinearLayout {
private Context myContext;
public YourLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
/*
* Magic!!! Android doesn't draw parts of layout which is offscreen. Since YourLinear layout has some offscreen part
* its offscreen portions didn't get drawn.
* This onMeasure function determines how much pixel of a layout need to be drawn.
* widthMeasureSpec -> Width of YourLayout onscreen
* heightMeasureSpec -> height of YourLayout on screen
* your_view_offscreen_width -> width of offscreen part
* your_view_offscreen_height-> height of offscreen part
* So heightMeasureSpec + your_view_offscreen_height draws complete height of YourLayout whether it is onscreen or offscreen.
* So widthMeasureSpec + your_view_offscreen_width draws complete width of YourLayout whether it is onscreen or offscreen
*/
super.onMeasure(widthMeasureSpec + your_view_offscreen_width, heightMeasureSpec + your_view_offscreen_height);
}
}
现在您可以将此布局用作您的不可见布局.. 即,如果您使用 xml 进行布局,您可以像这样使用它
<com.your.package.YourLayout layout_width="fill_parent" layout_height="fill_parent"
......
>