我可以将 XML-layout 变成 drawable 吗?
Can I turn an XML-layout into a drawable?
所以我想将 xml 布局作为视图的背景,但它必须是可绘制的。那么有什么办法可以把它变成drawable吗?
我也试过给它充气,但没有任何效果是我想要的:(
提前致谢。
基本上就像@CommonsWare说的那样。
1.获取activity
的LayoutInflator
2. 像 inflater.inflate(R.layout.sample,null,false)
一样膨胀布局
3. 创建一个canvas,将所有绘图保存到定义的位图中,如下所示
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
像这样将创建的视图绘制到canvas中
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);
使用位图,canvas确实绘制了
考虑在activity的重绘方面将位图保存在本地,参见以下解释:
根据您希望通过 canvas 创建此背景的动态程度和频率,您还应该考虑将创建的位图保存在某处(临时),因为每次布局更改(例如复选框选择)时,整个 canvas 必须重新绘制,膨胀过程也需要进行第二次,这可能导致 UI 中的运行时滞后。
所以只需将此位图保存在某处并重新加载它,这就是我在类似情况下所做的。
所以我想将 xml 布局作为视图的背景,但它必须是可绘制的。那么有什么办法可以把它变成drawable吗?
我也试过给它充气,但没有任何效果是我想要的:(
提前致谢。
基本上就像@CommonsWare说的那样。
1.获取activity
的LayoutInflator
2. 像 inflater.inflate(R.layout.sample,null,false)
一样膨胀布局
3. 创建一个canvas,将所有绘图保存到定义的位图中,如下所示
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
像这样将创建的视图绘制到canvas中
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);
使用位图,canvas确实绘制了
考虑在activity的重绘方面将位图保存在本地,参见以下解释:
根据您希望通过 canvas 创建此背景的动态程度和频率,您还应该考虑将创建的位图保存在某处(临时),因为每次布局更改(例如复选框选择)时,整个 canvas 必须重新绘制,膨胀过程也需要进行第二次,这可能导致 UI 中的运行时滞后。 所以只需将此位图保存在某处并重新加载它,这就是我在类似情况下所做的。