Articles of 硬件加速

使用animation类来animation视图内的最佳方法是什么?

我已阅读了有关“animation”和“ 硬件加速”的内容,但我仍然不确定使用animation类的最有效方法是什么。 (为了这个问题,我不需要在Honeycomb之前支持设备,所以我想使用animation类。) 例如,说我有一个视图。 在这个视图中我有一个我想淡入的BitmapDrawable。视图中还有许多其他元素不会改变。 什么属性或对象最适合animation师使用? 可绘制? 在onDraw中绘制位图的绘图? 别的东西? 如何在硬件加速方面做到最高效? 这是否需要为animation的每一步调用invalidate或者是否有一种方法来为drawable创buildanimation并且不会导致animation的每一步都完全重绘视图的其余部分? 我猜想我认为一个最佳的情况是剩下的视图不必完全用软件重新绘制,而是硬件加速有效地淡化绘图。 任何build议或build议的方法指针? 谢谢!

Android Studio的硬件加速不起作用

我在一台带有Windows 7的惠普dm4 Intel Core i5机器上。当我编译我的应用程序时,我的Android Studio给了我下面的错误。 谷歌search后,我发现我必须安装Android SDK附带的英特尔硬件加速执行pipe理器。 但是当我试图做到这一点,我得到这个错误。 这是否与硬件虚拟化有关? 我已经从BIOS启用它。 我不明白是什么问题。 请帮忙! 编辑:我从微软网站下载了Windows Hardware-Assisted Virtualization Detection Tool ,它说一切都很好。 这太疯狂了!

在Android上硬件加速FFmpeg?

我为Android编译了FFmpeg的老版本(如果我记得正确它是0.6.X)。 FFmpeg解码video帧,缩放它,然后使用OpenGL在屏幕上绘制它。 据我所知,问题是解码和缩放 – 他们不是硬件加速。 我的问题是: ARM(Android)处理器的最新FFmpeg硬件版本是否已加速? 我是否以错误的方式去做这件事? 即,有没有更好的方法来做到这一点? 凡“这个”播放h264高清video作为一个video的dynamic壁纸—帧率需要高,所以硬件加速是可取的,只要可用。

GLES20Canvas.clipPath中的UnsupportedOperationException,禁用硬件加速

我在我的应用程序中启用了硬件加速function,但是由于笔画大小写等问题,我禁用了该function。 现在,我在Google Play崩溃错误控制台中获取这个堆栈跟踪: java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:287) at com.myapp.MyCustomView.onDraw(SourceFile:288) at android.view.View.draw(View.java:9310) at android.view.View.getDisplayList(View.java:8773) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2298) … at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:609) at android.view.ViewRoot.draw(ViewRoot.java:1634) at android.view.ViewRoot.performTraversals(ViewRoot.java:1450) at android.view.ViewRoot.handleMessage(ViewRoot.java:2094) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:132) at android.app.ActivityThread.main(ActivityThread.java:4123) … 我在AndroidManifest.xml中指定了android:hardwareAccelerated="true" 。 但我特别禁用了我的自定义视图的构造函数中的硬件加速: public MyCustomView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // … code omitted // disable acceleration because Paint.setStrokeCap(Cap.ROUND) is not […]

在自定义视图onDraw中使用硬件层

所以我想了解如何在自定义View中正确使用硬件加速(如果可用),并持续animation。 这是我的onDraw()的基本前提: canvas.drawColor(mBackgroundColor); for (Layer layer : mLayers) { canvas.save(); canvas.translate(layer.x, layer.y); //Draw that number of images in a grid, offset by -1 for (int i = -1; i < layer.xCount – 1; i++) { for (int j = -1; j < layer.yCount – 1; j++) { canvas.drawBitmap(layer.bitmap, layer.w * i, layer.h * j, null); […]

ViewPager或ScrollView内的WebView – Android 3.0+怪异的渲染错误

我有一个ViewPager。 ViewPager的每一页都是一个ScrollView。 ScrollView包含一个WebView和其他几个视图。 在Android 2.3及以上的版本,一切正常,但在3.0以上有一个奇怪的渲染问题: 当在ViewPager中向左/向右滚动时,还有一个非常微妙的渲染问题(也出现在Android 4.0 Gmail应用程序中)。

View.isHardwareAccelerated()总是为false

我有许多设备上的硬件加速的视图。 在这个视图中,我需要能够检查是否使用硬件加速。 根据Android SDK文档 ,这是使用View.isHardwareAccelerated() 。 有趣的是,当在支持硬件加速的设备上testing时,即使视图本身实际上是硬件加速的,这个方法总是返回false。 (我已经确定地证实了这一点)它变得更加混乱: 如果我调用View.getLayerType()我发现它总是设置为View.LAYER_TYPE_NONE 。 如果我打电话给View.setLayerType(View.LAYER_TYPE_SOFTWARE)我可以有效地禁用硬件加速。 我可以通过调用View.setLayerType(View.LAYER_TYPE_HARDWARE)或View.setLayerType(View.LAYER_TYPE_NONE)来重新启用它。 为什么View.LAYER_TYPE_NONE启用硬件加速? 继续,对于支持hw加速的设备,我似乎可以通过检查View.LAYER_TYPE_SOFTWARE是否被设置来检查状态,但是我怀疑这种方法不适用于不支持hw加速的设备。 我想知道我是否滥用View.isHardwareAccelerated()或者它是否被破坏。 编辑:我觉得我有点接近理解这个问题。 这个问题也有帮助: 在运行时检测硬件加速:Android 我的工作理论是,当视图调用构造函数时,View并不知道硬件是否加速,这是我在做检查的地方。 如果是这种情况,我想知道我能在我的课上覆盖什么扩展视图,这将使我能够成功地检查硬件加速。 我怀疑, View.onSizeChanged(…)将工作,但我想避免使用可能被称为无数次的东西。 编辑#2:看起来就是这样。 我把我的支票移到View.onSizeChanged() ,它现在报告正确。 我仍然想知道,如果在我的观点内更好的地方,我可以移动这个检查。

为什么硬件加速不能在我的视图上工作?

我正在使用Facebook的回弹库来复制聊天头实现中看到的弹性animation。 问题是,大部分时间animation口吃。 一些图片将更好地解释这一点。 这里是平滑的聊天头animation: 这里是我的尝试(请注意白色View的animation几乎跳过所有的帧): 有一段时间它运作顺利: 下面是我目前使用的代码(如果你想快速设置,整个项目在Github上)。 我猜这与硬件加速没有在我的View上正确启用有关。 我的SpringSystem有两个Spring ,一个用于“泡泡”(Android图标),另一个用于内容(点击泡泡时显示的白色View )。 任何帮助如何解决这个问题将不胜感激。 谢谢。 AndroidManifest.xml : <application android:hardwareAccelerated="true" …> … </application> AppService.java : // the following code is in AppService#onCreate() // AppService extends android.app.Service // full code at https://github.com/vickychijwani/BubbleNote mContent.setLayerType(View.LAYER_TYPE_HARDWARE, null); final Spring bubbleSpring = system.createSpring(); bubbleSpring.setCurrentValue(1.0); bubbleSpring.addListener(new SpringListener() { @Override public void onSpringUpdate(Spring spring) { […]

Android Force GPU渲染如何启用和禁用?

我正在构build一个需要在canvas上进行大量绘制的应用程序。 我注意到,该应用程序是在高分辨率设备(例如nexus 7)有点laggy。 我看到开发人员选项中有一个强制GPU选项。 强制GPU启用时,我的应用程序运行绝对平滑。 我已经读过这个Force GPU选项被称为硬件加速,它只适用于Android 3.0及以上版本。 我的应用程序的目标是Android 2.3及以上。 是否有可能在任何Android 3.0或以上的设备上以编程方式启用硬件加速(或强制GPU – 无论魔术称为什么)? 就像是: if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ Turn On Hardware Accelerate HERE but How can i do this? any code snippet would be welcome/helpful/thanks }

在运行时检测硬件加速:Android

是否可以始终检测一个活动是否在创build时启用了硬件加速? 我担心我的图书馆的用户会通过清单来启用它,而不是为我的活动而禁用它(正如我指示他们那样做)。 我可以find唯一可靠的信息( http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html )说,我可以查询View.isHardwareAccelerated()和Canvas.isHardwareAccelerated() 。 但是,为了我的目的,我想确保在我的图书馆的活动显示时closures。 到目前为止,我不能得到任何报告一致的是/否,当它打开或closures。 我试图在虚拟视图中进行黑客攻击,将其设置为我的活动,然后对其进行testing,但始终返回false。 另外,我试着testingWindow.getAttributes( ).flags ,但是它们也没有显示出来。 我正在testing这个,因为我的库的硬件加速绘制path无法正常工作,似乎没有任何方法可以解决这个问题。