我正在尝试实施“动作滑动”功能 - 就像您可以在“新”Twitter应用中看到的那样。您可以在swipe for action description找到更详细的说明。
现在,有任何想法/解决方案如何实现此功能?
谢谢!
答案 0 :(得分:6)
在每行中使用GestureDetector
,并将行内容包装在ViewFlipper
中。在滑动时,切换ViewFlipper
。
我有一个ViewSwiper
,它结合了GestureDetector
和ViewFlipper
,但它可以在任何一个方向上工作(例如,从常规行,向左滑动或权利会切换到行动),这可能是也可能不是。但是,它应该让你知道这可能如何工作。
答案 1 :(得分:1)
我做了类似于你需要的事情 - 你可以找到一些关于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;
}
};