В последующем ответе мне сообщили, что я должен добавить GestureOverlayView, который я создаю в коде, к своей иерархии представления, и я не на 100%, как это сделать.Ниже приведен оригинальный вопрос о полноте.
Я хочу, чтобы моя игра могла распознавать жесты.У меня есть этот хороший класс SurfaceView, который я делаю onDraw для рисования своих спрайтов, и у меня есть поток, который запускает его для вызова onDraw и т. Д.
Все это прекрасно работает.
Я пытаюсьдобавить GestureOverlayView к этому, и он просто не работает.Наконец-то взломанный, где он не падает, но это то, что у меня есть
public class Panel extends SurfaceView implements SurfaceHolder.Callback, OnGesturePerformedListener
{
public Panel(Context context)
{
theContext=context;
mLibrary = GestureLibraries.fromRawResource(context, R.raw.myspells);
GestureOverlayView gestures = new GestureOverlayView(theContext);
gestures.setOrientation(gestures.ORIENTATION_VERTICAL);
gestures.setEventsInterceptionEnabled(true);
gestures.setGestureStrokeType(gestures.GESTURE_STROKE_TYPE_MULTIPLE);
gestures.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
//GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
gestures.addOnGesturePerformedListener(this);
}
...
...
onDraw...
surfaceCreated(..);
...
...
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
ArrayList<Prediction> predictions = mLibrary.recognize(gesture);
// We want at least one prediction
if (predictions.size() > 0) {
Prediction prediction = predictions.get(0);
// We want at least some confidence in the result
if (prediction.score > 1.0) {
// Show the spell
Toast.makeText(theContext, prediction.name, Toast.LENGTH_SHORT).show();
}
}
}
}
onGesturePerformed никогда не вызывается.Их пример имеет GestureOverlay в xml, я не использую его, моя деятельность проста:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Panel p = new Panel(this);
setContentView(p);
}
Так что я немного теряю недостающую часть информации здесь, это не таквызовите onGesturePerformed, и красивый довольно желтый «Вы рисуете жест» никогда не появится.