В ОС Android вообще можно реализовать LiveWallaper, реагирующий на касания экрана? По идее, метод public void onTouchEvent(MotionEvent event) для переопределения у него есть. Написал простенькую заготовку. Никакой реакции на касания. Метод просто не выполняется. Приведу свой класс-наследник LiveWallpaper'а:
package com.topsher.indicator;
import android.graphics.Rect;
import android.service.wallpaper.WallpaperService;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
public class IndicatorBlocksWallpaper extends WallpaperService {
private Rect surf;
private Painter mPainter;
private String TAG = "IndicatorBlockWallpaper";
@Override
public Engine onCreateEngine() {
// TODO Auto-generated method stub
return new MyEngine();
}
class MyEngine extends Engine
{
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
holder.getSurfaceFrame();
super.onSurfaceCreated(holder);
mPainter = new Painter(holder, getApplicationContext());
mPainter.start();
//mPainter.drawIndicator();
// mPainter.runMotion();
//mPainter.start();
}
@Override
public void onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
super.onTouchEvent(event);
//..
Log.d(TAG, "new Touch Event!");
//..
}
}
}
В логе события просто никак не регистрируется. Установленная в эмуляторе обоина просто висит фоном, но не реагирует на события. Подскажите возможные упущения или нет вообще таковой возможности как реагировать на разные события "Живым Обоям"?
Ответ
Вся проблема похоже в свойстве setTouchEventsEnabled, которое по умолчанию false :-).
Комментариев нет:
Отправить комментарий