0

ユーザーによるタッチジェスチャを検出しようとする一連のJavaコードがあります。ユーザーが単純なタッチ/スワイプなどを行うと、テキストビューにユーザーが現在行ったことが表示されます。ただし、エミュレータでコードを実行すると、HelloWorldが表示される黒い画面になります。タッチしても何も表示されません。なぜそうなのですか?添付されているのはコードです。ご協力いただきありがとうございます...

package org.tp.iit.cds.BrailleTypeSend;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector;
import android.widget.TextView;
import android.graphics.Color;


public class BrailleSend extends Activity implements OnGestureListener {
    /** Called when the activity is first created. */
    public LinearLayout main;    
    public TextView viewA;

    public GestureDetector gestureScanner;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        gestureScanner = new GestureDetector(this);

        main = new LinearLayout(this);
        main.setBackgroundColor(Color.GRAY);
        main.setLayoutParams(new LinearLayout.LayoutParams(320,480));

        viewA = new TextView(this);
        viewA.setBackgroundColor(Color.YELLOW);
        viewA.setTextColor(Color.WHITE);
        viewA.setTextSize(16);
        viewA.setLayoutParams(new LinearLayout.LayoutParams(320,80));
        main.addView(viewA);

        setContentView(R.layout.main);
    }

    @Override
    public boolean onDown(MotionEvent e) {  
        viewA.setText("Down Stroke");
        return true;
    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {       
        viewA.setText("tap");
        return true;
    }

} 
4

2 に答える 2

3

三つのこと:

  • このコードで行っているのは、ヒープ上に多数のオブジェクトを作成し、いくつかのプロパティを設定することだけです。作成したこれらのビューオブジェクトは、ビュー階層に追加されません。
gestureScanner = new GestureDetector(this);
main = new LinearLayout(this);
main.setBackgroundColor(Color.GRAY);
main.setLayoutParams(new LinearLayout.LayoutParams(320,480));
viewA = new TextView(this);
viewA.setBackgroundColor(Color.YELLOW);
viewA.setTextColor(Color.WHITE);
viewA.setTextSize(16);
viewA.setLayoutParams(new LinearLayout.LayoutParams(320,80));
main.addView(viewA);
  • アクティビティのビュー階層は、コードに:を記述したため、レイアウトフォルダー内のmain.xmlファイルから取得されsetContentView(R.layout.main);ます。

  • GestureListenerを何にも接続していません。コールバックが呼び出されることをどのように期待しますか?

于 2011-02-21T07:00:25.650 に答える
1

GestureDetector にジェスチャ オーバーレイが必要かどうかはわかりませんが、OnGesturePerformedListener を使用する場合は、ビューにジェスチャ オーバーレイを追加する必要があることはわかっています。ジェスチャ オーバーレイは、ユーザーの製図板として機能します。

GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);

そしてXML:

<android.gesture.GestureOverlayView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gestures"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

android:gestureStrokeType="multiple"
android:eventsInterceptionEnabled="true"
android:orientation="vertical">

<ListView
    android:id="@android:id/list"  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"  />

詳細はこちら

于 2011-05-07T15:58:12.510 に答える