我可以将 XML 布局转换为可绘制布局吗?

Dav*_*ren 2 android drawable android-inflate

所以我想将 xml 布局作为视图的背景,但它必须是可绘制的。那么有什么办法可以将 it 变成可绘制的吗?

我也尝试过给它充气,但没有任何效果符合我想要的:(

提前谢谢。

Tho*_*ter 6

基本上就像@CommonsWare 所说的那样。
1. 获取活动的 LayoutInflator
2. 像这样膨胀布局inflater.inflate(R.layout.sample,null,false)
3. 创建一个画布,将所有绘图保存到定义的位图中,如下所示

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Run Code Online (Sandbox Code Playgroud)
  1. 像这样将创建的视图绘制到画布中

    View v = inflater.inflate(R.layout.sample,null,false); // inflate view here
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    v.draw(c);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用位图,画布确实绘制了

  3. 考虑在重绘活动时在本地保存位图,请参阅以下说明:

根据您希望通过画布创建此背景的动态程度和频率,您还应该考虑将创建的位图保存在某处(临时),因为每次布局更改(例如复选框选择)时,都必须重新绘制整个画布并且膨胀该过程也需要再次完成,这可能会导致 UI 中的运行时滞后。因此,只需将此位图保存在某处并重新加载即可,这就是我在类似情况下所做的。