android开发: 我有一个LinearLayout要监听左滑和右滑给点示例代码 别给我自定义view的代码!
你可以使用GestureDetector来监听左滑和右滑动作。以下是一个示例代码:
import android.support.v4.view.GestureDetectorCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener {
private GestureDetectorCompat gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout = findViewById(R.id.linearLayout);
gestureDetector = new GestureDetectorCompat(this, this);
linearLayout.setOnTouchListener(new LinearLayout.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (e1.getX() > e2.getX()) {
Toast.makeText(this, "左滑", Toast.LENGTH_SHORT).show();
} else if (e1.getX() < e2.getX()) {
Toast.makeText(this, "右滑", Toast.LENGTH_SHORT).show();
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
}
在这个示例中,我们在LinearLayout的触摸事件中使用GestureDetector来处理手势。在onScroll方法中,我们检测到e1.getX()大于e2.getX()时,说明发生了左滑动作,反之则是右滑动作。你可以根据你的需求在这两个条件中执行相应的操作
原文地址: https://www.cveoy.top/t/topic/iJRG 著作权归作者所有。请勿转载和采集!