硬件加速画布

时间:2012-06-29 18:02:58

标签: android hardware android-canvas

我目前正致力于绘制到画布上的密集型LiveWallpaper。我发生了以下视频:http://www.youtube.com/watch?v=v9S5EO7CLjo

然而,当我尝试实现硬件加速时,我收到了错误。这是我的代码:

if (c != null && mStaticRects.length > 10 && c.isHardwareAccelerated())
                    drawSurfacePortrait(c);

if (c != null && mStaticRects.length < 20 && c.isHardwareAccelerated())
                    drawSurfaceLandscape(c);

当我运行它时,这是相应的错误:

AndroidRuntime(382): java.lang.NoSuchMethodError: android.graphics.Canvas.isHardwareAccelerated

最后这是我的清单......

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="stuff.of.mine"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />

<uses-permission android:name="android.permission.VIBRATE" ></uses-permission>


<uses-feature
    android:name="android.software.live_wallpaper"
    android:required="true" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" 
    ***android:hardwareAccelerated="true"***>
    <service
        android:name=".SomeWPService"
        android:permission="android.permission.BIND_WALLPAPER" 
        ***android:hardwareAccelerated="true"***>
        <intent-filter>
            <action android:name="android.service.wallpaper.WallpaperService" />
        </intent-filter>

        <meta-data
            android:name="android.service.wallpaper"
            android:resource="@xml/mylwp" />
    </service>

</application>

3 个答案:

答案 0 :(得分:5)

好的,我正在搜索stackoverflow并偶然发现了我自己的问题的答案

事实上,视频中的其中一个人Romain Guy回答了以下帖子:

SurfaceView中的画布 - 硬件加速

他说:

SurfaceView.lockCanvas()返回的画布目前无法进行硬件加速。

我想知道的是如何在没有SurfaceView.lock和unlockCanvas的情况下创建动态壁纸?

答案 1 :(得分:3)

API中引入了

canvas.isHardwareAccelerated,而你的minSdkVersion为7.尝试将其更改为11.

答案 2 :(得分:1)

您可以在以下级别控制硬件加速:

  • 应用
  • 活动
  • 窗口
  • 查看

在你的代码中,

<service
        android:name=".SomeWPService"
        android:permission="android.permission.BIND_WALLPAPER" 
        ***android:hardwareAccelerated="true"***>

服务标签不包含android:hardwareAccelerated!