Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从布局创建可绘制的_Android - Fatal编程技术网

Android 从布局创建可绘制的

Android 从布局创建可绘制的,android,Android,有没有从布局生成可绘制对象的方法 事实上,我需要初始布局的裁剪部分,我的想法是将布局转换为可绘制对象,然后裁剪为可绘制对象。简单版本: Bitmap snapshot = null; Drawable drawable = null; yourView.setDrawingCacheEnabled(true); yourView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); //Quality of the

有没有从布局生成可绘制对象的方法

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

简单版本:

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);
    }

好的,但那个可拉丝的控制行为会是什么呢?即使那是纯文本,我担心它看起来会很难看。依我看,如果你想重新使用这个布局,最好是为应该消失的元素设置可见性(View.go)。如果可以的话,只需在手前截图就可以了。这就是iPhone应用程序“加载”如此之快的原因。有关完整的答案,请参阅,下面的答案中有一个对我不起作用的替代答案。感谢您的回答,但yourView.getDrawingCache()返回空值。请确保您在查看后获得此位图。setDrawingCacheEnabled(true);如果你得到的位图就这么简单(没有复制它和其他东西),然后设置你的view.setDrawingCacheEnabled(false);由于缓存被禁用,它将变为null。我正使用上面的代码,为新的drawable.Strange使用一些维度值。这对我来说很好。你把这个代码放在哪里了?请注意,它必须在视图呈现后调用,因此onCreate()不是正确的选项。您还应该尝试调试,或者在不使用任何大小参数的情况下调用createBitmap,并检查它是否工作。