(Android) 我正在努力将全屏模拟时钟应用程序改编为动态壁纸。该应用程序使用三个独立ImageView
的时针、分针、秒针和RotateAnimation
.
我一直在寻找一种在动态壁纸中使用 ImageView 的方法。this和this表明这应该可以使用measure()
and layout()
,但我真的不知道如何使用它。例如,我使用下面的代码加载clock_background.png
到ImageView
.
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
在屏幕的左上角。我试图将上面的两行放在OnSurfaceCreated
and中OnSurfaceChanged
。不幸的是,它不起作用。据我了解,动态壁纸提供了一个 Surface(不是 SurfaceView),可以从中获取画布并在其上绘制东西。我为在 Android 上的新手而道歉:我做错了吗?我只是不想惹drawBitmap
或喜欢,反正我也不关心电池。非常感谢任何帮助。非常感谢!