1

(Android)フルスクリーンのアナログ時計アプリをライブ壁紙に適応させる作業をしています。このアプリはImageView、時、分、秒針、およびの3つを別々に使用しRotateAnimationます。

ライブ壁紙でImageViewを使用する方法を探していました。これこれmeasure()は、これがとで可能であることを示しています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画面の左上隅に表示されると思います。OnSurfaceCreated上記の2行をとに入れてみましたOnSurfaceChanged。残念ながら、それは機能しません。私が理解しているように、ライブ壁紙はSurface(SurfaceViewではなく)を提供し、そこからキャンバスを取得してそこに物を描くことができます。私はAndroidで非常に新しいことをお詫びします:私はそれをすべて間違っていますか?私はただいじりたくない、drawBitmapまたは好きではありません、そして私はとにかくバッテリーを気にしません。どんな助けでも大歓迎です。どうもありがとうございます!

4

1 に答える 1

0

私は短い、はい、あなたはそれを間違っています。提供されたキャンバスとその drawX() メソッドを使用する

于 2012-11-13T22:09:10.513 に答える