Android ViewFlipper+;主屏幕动画

Android ViewFlipper+;主屏幕动画,android,animation,homescreen,viewflipper,Android,Animation,Homescreen,Viewflipper,我正在尝试使用一个ViewFlipper,使其像主屏幕一样工作(布局将随手指移动)。举个例子。我想使用一个只包含两个子对象的ViewFlipper来实现这一点,因此,根据用户移动手指的方式,当前视图的任一侧都应该显示相反的视图。此代码一次仅适用于一个方向。这是在火山口 case MotionEvent.ACTION_MOVE: leftView.setVisibility(View.VISIBLE); rightView.setVisibility(View.VISIBLE); // mov

我正在尝试使用一个ViewFlipper,使其像主屏幕一样工作(布局将随手指移动)。举个例子。我想使用一个只包含两个子对象的ViewFlipper来实现这一点,因此,根据用户移动手指的方式,当前视图的任一侧都应该显示相反的视图。此代码一次仅适用于一个方向。这是在火山口

case MotionEvent.ACTION_MOVE: 

leftView.setVisibility(View.VISIBLE);
rightView.setVisibility(View.VISIBLE);
// move the current view to the left or right.
currentView.layout((int) (touchEvent.getX() - oldTouchValue),
    currentView.getTop(),
    (int) (touchEvent.getX() - oldTouchValue) + 320,
    currentView.getBottom());

// place this view just left of the currentView
leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
    currentView.getLeft(), leftView.getBottom());

// place this view just right of the currentView
rightView.layout(currentView.getRight(), rightView.getTop(), 
    currentView.getRight() + 320, rightView.getBottom());
我最后放的两条底线中,哪个方向正确,而另一条则不正确

下面是我如何设置leftView和rightView的:

final View currentView = myFlipper.getCurrentView();
final View leftView, rightView;
if (currentView == meView) {
    Log.d("current layout: ", "me");
    leftView = youView;
    rightView = youView;
} else if (currentView == youView) {
    Log.d("current layout: ", "you");
    leftView = meView;
    rightView = meView;
} else {
    leftView = null;
    rightView = null;
}

是否可以将其设置为在当前视图的两侧显示相同的视图

我可能没有很有建设性的建议,但如果你想让它像主屏幕一样运行,为什么不想查看,并根据需要修改它呢?

谢谢隐形直升机

如果有人感兴趣,这里使用的是新代码

        if (touchEvent.getX() < oldTouchValue){
             // place this view just right of the currentView
            rightView.layout(currentView.getRight(), rightView.getTop(), 
                            currentView.getRight() + 320, rightView.getBottom());

        }else if (touchEvent.getX() > oldTouchValue) {
            // place this view just left of the currentView
            leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
                            currentView.getLeft(), leftView.getBottom());

        }
if(touchEvent.getX()oldTouchValue){
//将此视图放置在当前视图的左侧
layout(currentView.getLeft()-320,leftView.getTop(),
currentView.getLeft(),leftView.getBottom();
}

我还向下移动了对MotionEvent.ACTION_的setVisibility()调用,试图消除视图中的一些闪烁。这很有帮助,但我还是得到了一些帮助。

要消除闪烁,请在
MotionEvent.ACTION\u下设置
setVisibility(View.INVISIBLE)
。视图上的默认值为“GONE”。这意味着您不能在视图上设置
Layout()
,直到视图“可见”或“不可见”。因此,分三个步骤:

  • 将视图上的可见性设置为不可见
  • 在视图上设置布局()
  • 将“可见性”设置为在视图上可见

  • 如果我理解您的请求,现在应该使用

    看起来像这样:


    鉴于用户一次只能移动一个方向,为什么不使用if语句查看用户移动的方向,然后只在该侧显示视图?这是另一种方法