我有一组java代码,我尝试用户检测触摸手势。当用户进行简单的触摸/向下滑动等时,文本视图将显示用户当前所做的事情。但是,当我在我的模拟器上运行代码时,它只是一个显示Hello World的黑屏!当我触摸时,什么都没有显示..为什么会这样?附上的是代码。谢谢你的帮助...
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;
}
}
答案 0 :(得分: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);
您的活动的View heirarchy来自您的布局文件夹中的main.xml文件,因为您在代码中编写了setContentView(R.layout.main);
。
您尚未将GestureListener附加到任何内容。你如何期待调用回调?
答案 1 :(得分: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" />
有关它的更多信息here