从布局文件创建可绘制对象

3

有没有一种方法可以从布局中生成可绘制对象?

实际上,我需要裁剪初始布局的一部分,我的想法是将布局转换为可绘制对象,然后裁剪可绘制对象。


好的,但是那个可绘制对象的控件行为会怎样呢?即使那只是纯文本,我担心它看起来很丑。在我看来,如果你想重用那个布局,最好是对应该消失的元素设置setVisibility(View.GONE)。 - Zelimir
如果这样做可以完成工作,那么提前截屏并没有什么问题。这就是iPhone应用程序加载如此迅速的原因。 - Joseph Earl
请参考http://stackoverflow.com/questions/28657088/how-to-get-the-drawable-from-relative-layout-in-android,其中有一个完整的答案,提供了一个替代方案,因为下面的答案对我无效。 - Andreas Weber
1个回答

10

一个简单的版本:

Bitmap snapshot = null;
    Drawable drawable = null;
    yourView.setDrawingCacheEnabled(true);
    yourView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); //Quality of the snpashot
    try {
        snapshot = Bitmap.createBitmap(yourView.getDrawingCache(), sizes and stuff); // You can tell how to crop the snapshot and whatever in this method
        drawable = new BitmapDrawable(snapshot)
    } finally {
        yourView.setDrawingCacheEnabled(false);
    }

谢谢回复,但是yourView.getDrawingCache()返回null。 - Gratzi
确保在 yourView.setDrawingCacheEnabled(true) 之后获取此位图;如果您仅以此方式获取位图(而无需复制等操作),然后设置 yourView.setDrawingCacheEnabled(false),它将变为 null,因为缓存已被禁用。 - Alex Orlov
我使用上述代码,只是针对新绘制的可绘制对象设置了一些尺寸值。 - Gratzi
奇怪,这对我来说很好用。你把这段代码放在哪里了?请注意,它必须在视图渲染后调用,因此onCreate()不是正确的选项。 - Alex Orlov
你也应该尝试调试,或者调用createBitmap而不带任何大小参数,并检查它是否能正常工作。 - Alex Orlov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接