1

(Android) 我正在努力将全屏模拟时钟应用程序改编为动态壁纸。该应用程序使用三个独立ImageView的时针、分针、秒针和RotateAnimation.

我一直在寻找一种在动态壁纸中使用 ImageView 的方法。thisthis表明这应该可以使用measure()and layout(),但我真的不知道如何使用它。例如,我使用下面的代码加载clock_background.pngImageView.

public class MyWallpaperService extends WallpaperService {
    @Override
    public Engine onCreateEngine() {
        return new MyWallpaperEngine();
    }
    ....
    public void onCreate(SurfaceHolder surfaceHolder) {
        super.onCreate(surfaceHolder);
        mContext = getBaseContext();
        backgroundImage = new ImageView(mContext);
        backgroundImage.setImageDrawable(mContext.getResources().getDrawable(R.drawable.clock_background));
    }
}

后来我有:

backgroundImage.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
backgroundImage.layout(0, 0, 150, 150);

我希望上面的代码会显示clock_background.png在屏幕的左上角。我试图将上面的两行放在OnSurfaceCreatedand中OnSurfaceChanged。不幸的是,它不起作用。据我了解,动态壁纸提供了一个 Surface(不是 SurfaceView),可以从中获取画布并在其上绘制东西。我为在 Android 上的新手而道歉:我做错了吗?我只是不想惹drawBitmap或喜欢,反正我也不关心电池。非常感谢任何帮助。非常感谢!

4

1 回答 1

0

我简短地说,是的,你做错了。使用提供的画布及其 drawX() 方法

于 2012-11-13T22:09:10.513 回答