Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

LiveWallpaper, реагирующий на касания

#livewallpaper #android #java


В ОС 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!");
        //..
    }

}

}
В логе события просто никак не регистрируется. Установленная в эмуляторе обоина просто
висит фоном, но не реагирует на события. Подскажите возможные упущения или нет вообще
таковой возможности как реагировать на разные события "Живым Обоям"?    


Ответы

Ответ 1



Вся проблема похоже в свойстве setTouchEventsEnabled, которое по умолчанию false :-).

Ответ 2



Такое конечно же возможно. Сам не разбирался, но нагуглил вот это: StackOverflow Добавлю парочку моментов: Для реализации обоин можно использовать плагин к игровому движку AndEngine. Получается гораздо меньше кода. Посмотрите пример обоины в доке: Тыц

Комментариев нет:

Отправить комментарий