androidx.recyclerview.widget.RecyclerView#setOnTouchListener ( )源码实例Demo

下面列出了androidx.recyclerview.widget.RecyclerView#setOnTouchListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

@SuppressLint("ClickableViewAccessibility")
private void setTouchListener(@NonNull RecyclerView recyclerView,
                              @NonNull RecyclerView.ViewHolder viewHolder,
                              float dx)
{
  recyclerView.setOnTouchListener((v, event) -> {
    switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:
        shouldTriggerSwipeFeedback = true;
        break;
      case MotionEvent.ACTION_UP:
        handleTouchActionUp(recyclerView, viewHolder, dx);
      case MotionEvent.ACTION_CANCEL:
        swipeBack = true;
        shouldTriggerSwipeFeedback = false;
        resetProgressIfAnimationsDisabled(viewHolder);
        break;
    }
    return false;
  });
}
 
private void handleTouchActionUp(@NonNull RecyclerView recyclerView,
                                 @NonNull RecyclerView.ViewHolder viewHolder,
                                 float dx)
{
  if (dx > SWIPE_SUCCESS_DX) {
    canTriggerSwipe = false;
    onSwiped(viewHolder);
    if (shouldTriggerSwipeFeedback) {
      vibrate(viewHolder.itemView.getContext());
    }
    recyclerView.setOnTouchListener(null);
  }
  recyclerView.cancelPendingInputEvents();
}
 
源代码3 项目: DeviceConnect-Android   文件: AccessLogActivity.java
@SuppressLint("ClickableViewAccessibility")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_accesslog_date_list, container, false);

    mListAdapter = new DateListAdapter(inflater);
    mListAdapter.setOnItemClickListener((v, position) ->
            gotoAccessLogListFragment(mListAdapter.getItem(position)));
    mListAdapter.setOnItemRemoveListener((data) -> {
        AccessLogProvider provider = getAccessLogProvider();
        if (provider != null) {
            provider.remove(data);
        }
    });

    RecyclerView recyclerView = root.findViewById(R.id.recycler_view_accesslog_date_list);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    recyclerView.setAdapter(mListAdapter);
    recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
    recyclerView.setOnTouchListener((v, event) -> {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mListAdapter.dismissSnackbar();
                break;
        }
        return false;
    });

    ItemTouchHelper helper = new ItemTouchHelper(new SwipeToDeleteCallback(getContext()) {
        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            mListAdapter.onItemRemove(viewHolder, recyclerView);
        }
    });
    helper.attachToRecyclerView(recyclerView);

    setHasOptionsMenu(true);

    return root;
}
 
private void setTouchListener(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
                              float dX, float dY, int actionState, boolean isCurrentlyActive) {

    recyclerView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            swipeBack = event.getAction() == MotionEvent.ACTION_CANCEL || event.getAction() == MotionEvent.ACTION_UP;
            return false;
        }
    });
}
 
源代码5 项目: DeviceConnect-Android   文件: AccessLogActivity.java
@SuppressLint("ClickableViewAccessibility")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View root = inflater.inflate(R.layout.fragment_accesslog_list, container, false);

    mListAdapter = new AccessLogListAdapter(inflater);
    mListAdapter.setOnItemClickListener((view, position) ->
            gotoAccessLogFragment(mListAdapter.getItem(position)));
    mListAdapter.setOnItemRemoveListener((data) -> {
        AccessLogProvider provider = getAccessLogProvider();
        if (provider != null) {
            provider.remove(data);
        }
    });

    mCondition = root.findViewById(R.id.fragment_search_edit_text);

    RecyclerView recyclerView = root.findViewById(R.id.list_view_accesslog_list);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
    recyclerView.setAdapter(mListAdapter);
    recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
    recyclerView.setOnTouchListener((v, event) -> {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mListAdapter.dismissSnackbar();
                break;
        }
        return false;
    });

    ItemTouchHelper helper = new ItemTouchHelper(new SwipeToDeleteCallback(getContext()) {
        @Override
        public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
            mListAdapter.onItemRemove(viewHolder, recyclerView);
        }
    });
    helper.attachToRecyclerView(recyclerView);

    root.findViewById(R.id.fragment_search_btn).setOnClickListener((v) -> {
        searchAccessLogs(mCondition.getText().toString());
        InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    });

    setHasOptionsMenu(true);

    return root;
}