Android LiveWallpar双击可打开活动

Android LiveWallpar双击可打开活动,android,live-wallpaper,Android,Live Wallpaper,我是android开发的新手。 我想在我的壁纸中实现一个双击事件,这样当我双击壁纸时,它就会打开应用程序 以下是我绘制墙纸图像的代码: public class AbcService extends WallpaperService { public void onCreate() { super.onCreate(); } public void onDestroy() { super.onDestroy();

我是android开发的新手。 我想在我的壁纸中实现一个双击事件,这样当我双击壁纸时,它就会打开应用程序

以下是我绘制墙纸图像的代码:

public class AbcService extends WallpaperService
{
    public void onCreate()
    {
        super.onCreate();
    }

    public void onDestroy()
    {
        super.onDestroy();
    }

    public Engine onCreateEngine()
    {
        return new wallpaperEngine();
    }

    class wallpaperEngine extends Engine
    {
        public Bitmap image1;

        wallpaperEngine()
        {
            image1 = BitmapFactory.decodeResource(getResources(), R.drawable.img_3);
        }

        public void onCreate(SurfaceHolder surfaceHolder)
        {
            super.onCreate(surfaceHolder);
        }

        public void onOffsetsChanged(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels)
        {
            drawFrame();
        }

        void drawFrame()
        {

        final SurfaceHolder holder = getSurfaceHolder();

        Canvas c = null;
        try
        {
            c = holder.lockCanvas();
            if (c != null)
            {
                c.drawBitmap(image1, 0, 0, null);

            }
        } finally
        {
            if (c != null) holder.unlockCanvasAndPost(c);
        }
    }
}
现在该怎么办?? 我走对了吗


提前感谢您。

对于实时墙纸中的双击操作,您可以将GestureDetector子类化。SimpleGestureListener如下所示:

class wallpaperEngine extends Engine {
    ...
    ...
    private GestureDetector gestureListener;

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDoubleTap(MotionEvent e) {

            //start intent/application here

            return super.onDoubleTap(e);
        }
    }
然后在onCreate(SurfaceHolder-SurfaceHolder)方法中创建该类的实例,并在实时壁纸中启用触摸事件:

   public void onCreate(SurfaceHolder surfaceHolder) {
        super.onCreate(surfaceHolder);

        gestureListener = new GestureDetector(getApplicationContext(), new GestureListener());
        setTouchEventsEnabled(true);

    }
然后@Override onTouchEvent:

    @Override
    public void onTouchEvent(MotionEvent event) {

       gestureListener.onTouchEvent(event);

    }

这是我能想到的最简单的方法。

对于实时壁纸中的双击操作,您可以将GestureDetector子类化。SimpleGestureListener如下所示:

class wallpaperEngine extends Engine {
    ...
    ...
    private GestureDetector gestureListener;

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDoubleTap(MotionEvent e) {

            //start intent/application here

            return super.onDoubleTap(e);
        }
    }
然后在onCreate(SurfaceHolder-SurfaceHolder)方法中创建该类的实例,并在实时壁纸中启用触摸事件:

   public void onCreate(SurfaceHolder surfaceHolder) {
        super.onCreate(surfaceHolder);

        gestureListener = new GestureDetector(getApplicationContext(), new GestureListener());
        setTouchEventsEnabled(true);

    }
然后@Override onTouchEvent:

    @Override
    public void onTouchEvent(MotionEvent event) {

       gestureListener.onTouchEvent(event);

    }
这是我能想到的最简单的方法