private void init() { listView = (ListView) findViewById(R.id.list_view); String[] strs = getData(100); List<Map<String, Object>> list = new ArrayList<>(); for (String str : strs) { Map<String, Object> map = new HashMap<>(); map.put("text", str); list.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item_simple, new String[]{"text"}, new int[]{R.id.text_view}); listView.setAdapter(adapter); AutoScrollHelper autoScrollHelper = new ListViewAutoScrollHelper(listView); listView.setOnTouchListener(autoScrollHelper); autoScrollHelper.setEnabled(true); // autoScrollHelper.setActivationDelay(3000); // autoScrollHelper.setRampDownDuration(3000); Toast.makeText(this, "长按上或下边缘", Toast.LENGTH_SHORT).show(); }
public boolean onForwardedEvent(MotionEvent event, int activePointerId) { boolean handledEvent = true; boolean clearPressedItem = false; int actionMasked = MotionEventCompat.getActionMasked(event); switch (actionMasked) { case 1: handledEvent = false; break; case 2: break; case 3: handledEvent = false; break; } int activeIndex = event.findPointerIndex(activePointerId); if (activeIndex < 0) { handledEvent = false; } else { int x = (int) event.getX(activeIndex); int y = (int) event.getY(activeIndex); int position = pointToPosition(x, y); if (position == -1) { clearPressedItem = true; } else { View child = getChildAt(position - getFirstVisiblePosition()); setPressedItem(child, position, (float) x, (float) y); handledEvent = true; if (actionMasked == 1) { clickPressedItem(child, position); } } } if (!handledEvent || clearPressedItem) { clearPressedItem(); } if (handledEvent) { if (this.mScrollHelper == null) { this.mScrollHelper = new ListViewAutoScrollHelper(this); } this.mScrollHelper.setEnabled(true); this.mScrollHelper.onTouch(this, event); } else if (this.mScrollHelper != null) { this.mScrollHelper.setEnabled(false); } return handledEvent; }