【发布时间】:2016-02-06 12:56:58
【问题描述】:
我在 relativelayout 中有两个线性布局。我能够使用 GestureDetector 类检测手势。我想同时检测不同视图上的手势。为此,我想要两个不同的 GestureDetector 但不知道如何实现。
这是我的 xml 文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#ffffffff">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="500dp"
android:layout_alignParentTop="true"
android:id="@+id/LinearLayout1"
android:layout_above="@+id/textView2"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#673AB7"></LinearLayout>
<LinearLayout
android:orientation="vertical"
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/textView2"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:background="#1DE9B6"></LinearLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:layout_marginBottom="47dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
这是我的 .java 文件:
public class MainActivity extends AppCompatActivity implements OnGestureListener {
LinearLayout myLayout;
LinearLayout myLayout2;
GestureDetectorCompat detector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
detector = new GestureDetectorCompat(this, this);
}
@Override
protected void onStart() {
super.onStart();
myLayout = (LinearLayout) findViewById(R.id.LinearLayout1);
myLayout2 = (LinearLayout) findViewById(R.id.LinearLayout2);
myLayout.setOnTouchListener(new LinearLayout.OnTouchListener() {
public boolean onTouch(View v, MotionEvent m) {
return detector.onTouchEvent(m);
}
}
);
myLayout2.setOnTouchListener(new LinearLayout.OnTouchListener() {
public boolean onTouch(View v, MotionEvent m) {
return detector.onTouchEvent(m);
}
}
);
}
@Override
public boolean onDown(MotionEvent event) {
return true;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
return true;
}
@Override
public void onLongPress(MotionEvent event) {
Log.d("Long Press", ".........");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("X,Y", " " + e1.getX() + " " + e2.getX() + " " + e1.getY() + " " + e2.getY());
return true;
}
@Override
public void onShowPress(MotionEvent event) {
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
return true;
}
}
我想为 myLayout2 使用不同的 GestureDetector。
【问题讨论】:
标签: android gesture-recognition