- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我正在尝试制作 VideoView 的屏幕截图。我认为最简单的方法是:
videoView.setDrawingCacheEnabled(true);
然后当我需要截图的时候:
Bitmap screenshot = videoView.getDrawingCache();
但由于某种原因,我每次返回的位图都是黑色的。有人对此有任何成功吗?我也试过:
Bitmap bitmap = Bitmap.createBitmap(videoView.getWidth(), videoView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
videoView.draw(canvas);
但是再一次,这返回给我一张黑色图像。我可以看到 VideoView 几乎没有记录在 Android javadocs 中。有帮助吗?
最佳答案
来自 View#setDrawingCacheEnabled 的文档:
Enabling the drawing cache is similar to setting a layer when hardware acceleration is turned off. When hardware acceleration is turned on, enabling the drawing cache has no effect on rendering because the system uses a different mechanism for acceleration which ignores the flag. If you want to use a Bitmap for the view, even when hardware acceleration is enabled, see setLayerType(int, android.graphics.Paint) for information on how to enable software and hardware layers.
有可能 VideoView 使用硬件加速运行并绕过缓存机制。良好的源潜水可能会有所启发。
编辑 - this post似乎清除了一些东西:
Sorry, by its nature a SurfaceView does not draw in the normal view hierarchy update system, so it won't be drawn in that.
(VideoView 是 SurfaceView 的子级)
关于android - VideoView getDrawingCache 返回黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278707/
我几乎阅读了关于这个主题的所有帖子,但似乎没有一个有帮助。 我正在 try catch 当前屏幕的屏幕截图。为此,我正在使用 getDrawingCache。这是我的代码: mRootView.get
我有一个自定义 View ,它将管理数百个离散的用户定义的顺序绘图事件。我不是维护所有单个文本、线条、形状更新的集合,然后在每次 onDraw 期间重新绘制它们,而是在每次 onDraw 结束时获取
我在 onDraw 函数中调用 getDrawingCache。问题是它只在第一次包含对 Canvas 的更改,之后,它根本不会更新新的更改。这是我的代码: paintAction.d
我目前正在处理一个项目,该项目需要显示一个带有灰色(黑色/白色)背景的对话框。为此,我截取了整个应用程序的屏幕截图,将此屏幕截图放在全屏对话框的背景上,并在其上放置一个 ColorFilter 使其变
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我使用以下方法在我的应用中截取屏幕截图: private Bitmap takeScreenshot() { View rootView = findViewById(android.R.id
我想使用 DrawingCache 捕获 ImageView 的内容。我写了下面的代码。 iv1 = (ImageView)findViewById(R.id.iv1); iv2 = (ImageVi
我正在开发一个简单的绘画应用程序,并尝试实现在用户请求时提供更多空间来绘制的功能,我认为这可以通过简单地启用我的 CustomView 类(包含在 LinearLayout 中)的滚动来完成然后在 S
所以我正在尝试制作 VideoView 的屏幕截图。我认为最简单的方法是: videoView.setDrawingCacheEnabled(true); 然后当我需要截图的时候: Bitmap sc
我使用 Pragmatic Bookshelf 的 Touch V2 示例有一个带有加载位图图像的 RelativeLayout -- http://media.pragprog.com/titles
我正在尝试在 TextView 中创建文本的位图。过去,我使用 getDrawingCache 完成此操作。但是,现在我需要创建一个 TextView 的位图,其中的文本比以前长得多。这导致 getD
@Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) thr
我正在尝试创建一个允许用户截取当前 View 的应用程序。我正在使用以下代码来执行此操作。 View content = ((Activity)ctx).findViewById(R.id.rootl
我对 TextView 的 getDrawingCache() 和 setText() 有问题。在 setText() 和使用 getDrawingCache() 之后,我没有在位图中看到文本。
我在自定义 View 上绘图。然后将绘制的图像转换为位图以进行进一步处理,但是当我这样做时Bitmap bitmap = drawView1.getDrawingCache();位图为空。为什么为nu
我正在使用 getDrawingCache() 方法捕获我的布局 View 并从中创建图像。代码工作正常并生成图像,但这里的问题是,生成的图像质量很低。我希望生成的图像的分辨率很高,这样无论何时将其设
我的应用有这段代码 mView.setDrawingCacheEnabled(true); mBitmap = Bitmap.createBitmap(mView.getDrawingCache())
如果我有一个具有透明背景的 View 并且我执行了 bitmap = view.getDrawingCache();,不幸的是该位图不再透明。后台设置黑色背景。 我试过了 view.setDrawin
此代码中缺少什么?同样的代码适用于 ICS。在 API 8 上,滚动出现并且一些内容从屏幕上消失。这种情况下如何获取绘图缓存? 代码: TableLayout page = (TableLayout)
我正在尝试将 View 转换为位图。在模拟器中我的程序工作正常并按预期运行但是当我在设备中运行相同的代码时它在特定行给出空指针异常: Bitmap b = Bitmap.createBitmap(vi
我是一名优秀的程序员,十分优秀!