【发布时间】:2011-07-02 12:12:16
【问题描述】:
我正在尝试实现“滑动操作”功能 - 就像您在“新”推特应用中看到的那样。您可以在swipe for action description 找到更详细的描述。
现在,是否有任何想法/解决方案如何实现此功能?
谢谢!
【问题讨论】:
标签: java android listview twitter swipe
我正在尝试实现“滑动操作”功能 - 就像您在“新”推特应用中看到的那样。您可以在swipe for action description 找到更详细的描述。
现在,是否有任何想法/解决方案如何实现此功能?
谢谢!
【问题讨论】:
标签: java android listview twitter swipe
在每一行中使用GestureDetector,并将行内容本身包装在ViewFlipper 中。在滑动时,切换ViewFlipper 的子代。
我有一个ViewSwiper,它结合了GestureDetector 和ViewFlipper,但它被设计为在任一方向工作(例如,从常规行向左滑动或切换到动作),这可能是可取的,也可能不是可取的。但是,它应该让您了解它是如何工作的。
【讨论】:
我做了一些与你需要的类似的事情 - 你可以找到一些关于 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;
}
};
【讨论】: