Android ViewFlipper+;主屏幕动画
我正在尝试使用一个ViewFlipper,使其像主屏幕一样工作(布局将随手指移动)。举个例子。我想使用一个只包含两个子对象的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
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语句查看用户移动的方向,然后只在该侧显示视图?这是另一种方法