我正在拍摄屏幕截图,或者如果更好地说出来,我可以说我正在从我的应用程序循环中的视图绘制缓存中创建位图。
我能够以3 fps的速度拍摄三星galaxy tab 3的屏幕截图,这非常好。但是,当我在像Nexus 7这样的高分辨率设备上做同样的事情时,速度会下降到5 fps。
我担心nexus 10的级别可能会下降到2 fps,这会使我的应用程序在更大的设备上瘫痪。
任何人都可以建议我在没有设备生根的情况下提高速度吗?
答案 0 :(得分:1)
我找到了解决方案。
我使用的是view.getDrawingCache()这是一个很慢的过程。相反,我们可以使用View.draw(canvas)方法。
while (running) {
try {
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.RGB_565);
v1.draw(new Canvas(bitmap));
if (bitmap != null) {
bitmaps.addImage(bitmap);//add to arraylist
}
} catch (ArrayIndexOutOfBoundsException e) {
System.err.println(" ArrayIndexOutOfBoundsException "
+ e.getMessage());
} catch (Exception e) {
System.err.println("EXCEPTION " + e.getMessage());
}
}
这段代码可能抛出数组indexOutOfBound异常,所以我抓住了它。它作为魅力:)