java - 在 Android 应用的片段中未检测到手势
问题描述
在片段内部,我想添加一个投掷手势,但我不知道为什么在应用程序中没有检测到它。我用过 Toast,所以我会知道一个投掷手势,但不会弹出 tost。
我的片段包含回收器视图和一些在应用程序顶部水平对齐的按钮。
我有什么遗漏或必须更改才能使其正常工作吗?
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view= inflater.inflate(R.layout.fragment_wallpaper,container,false);
//gesture logic;
final GestureDetector gesture = new GestureDetector(getActivity(),
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
final int SWIPE_MIN_DISTANCE = 120;
final int SWIPE_MAX_OFF_PATH = 250;
final int SWIPE_THRESHOLD_VELOCITY = 200;
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getActivity(), "right to left", Toast.LENGTH_SHORT).show();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Toast.makeText(getActivity(), "left to right", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// nothing
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return gesture.onTouchEvent(event);
}
});
//end of gesture logic;
btncars=view.findViewById(R.id.btncars);
btn_nature=view.findViewById(R.id.btn_nature);
btn_travel=view.findViewById(R.id.btn_travel);
btn_bikes=view.findViewById(R.id.btn_bikes);
btn_wildlife=view.findViewById(R.id.btn_wildlife);
btncars.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent =new Intent(getActivity(),cars.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivityForResult(intent,1);
}
});
return view;
}
解决方案
推荐阅读
- javascript - 如何正确使用 while 循环来大写文本字段内容,直到找到一个空字段?
- c# - 哪种方法更好:使用 EventLogReader 查询或使用 EntryWrittenEventHandler 获得通知?
- angular - 无法在 Angular 6 服务中找到“地图”
- pytest - 具有来自另一个夹具的参数化的 pytest 夹具
- python - Keras BatchNorm 层在训练和推理期间给出奇怪的结果
- javascript - Chrome 不支持 getUserMedia
- perl - 需要将二进制值转换为数字
- android - 从链接到我的应用程序的电话簿中删除联系人
- javascript - npm 检查需要哪个包子包
- java - 如何在创建按需单例对象时处理空指针异常