【问题标题】:Android ListView Swipe for Action like Twitter ListAndroid ListView Swipe for Action 像 Twitter 列表
【发布时间】:2011-07-02 12:12:16
【问题描述】:

我正在尝试实现“滑动操作”功能 - 就像您在“新”推特应用中看到的那样。您可以在swipe for action description 找到更详细的描述。

现在,是否有任何想法/解决方案如何实现此功能?

谢谢!

【问题讨论】:

    标签: java android listview twitter swipe


    【解决方案1】:

    在每一行中使用GestureDetector,并将行内容本身包装在ViewFlipper 中。在滑动时,切换ViewFlipper 的子代。

    我有一个ViewSwiper,它结合了GestureDetectorViewFlipper,但它被设计为在任一方向工作(例如,从常规行向左滑动切换到动作),这可能是可取的,也可能不是可取的。但是,它应该让您了解它是如何工作的。

    【讨论】:

    • 感谢您的回复。我找到了与您类似的解决方案。 goo.gl/WpFEi 第一次测试反应很好但结果滞后。我认为这个解决方案需要一些定制 - 但我认为它会起作用!谢谢
    • @CodeDroid:what“适用于 Android 2.1+ GestureDetector”吗?
    【解决方案2】:

    我做了一些与你需要的类似的事情 - 你可以找到一些关于 there 的信息。我在那里做一些手动的东西,但效果很好。为了您的方便,这里是我使用的代码:

    OnTouchListener gestureListener = new View.OnTouchListener() {
    
        private int padding = 0;
        private int initialx = 0;
        private int currentx = 0;
        private ViewHolder viewHolder;
    
        public boolean onTouch(View v, MotionEvent event) {
    
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                padding = 0;
                initialx = (int) event.getX();
                currentx = (int) event.getX();
                viewHolder = ((ViewHolder) v.getTag());
            }
    
            if (event.getAction() == MotionEvent.ACTION_MOVE) {
                currentx = (int) event.getX();
                padding = currentx - initialx;
            }
    
            if (event.getAction() == MotionEvent.ACTION_UP ||
                event.getAction() == MotionEvent.ACTION_CANCEL) {
                padding = 0;
                initialx = 0;
                currentx = 0;
            }
    
            if (viewHolder != null) {
                if (padding == 0) {
                    v.setBackgroundColor(0xFF000000);
                    if (viewHolder.running)
                        v.setBackgroundColor(0xFF058805);
                }
                if (padding > 75) {
                    viewHolder.running = true;
                    v.setBackgroundColor(0xFF00FF00);
                    viewHolder.icon.setImageResource(R.drawable.clock_running);
                }
                if (padding < -75) {
                    viewHolder.running = false;
                    v.setBackgroundColor(0xFFFF0000);
                }
                v.setPadding(padding, 0, 0, 0);
            }
            return false;
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多