Android 在另一个视图设置可见性(消失)后,将视图设置为新位置的动画
我想在布局中显示3个Android 在另一个视图设置可见性(消失)后,将视图设置为新位置的动画,android,android-animation,Android,Android Animation,我想在布局中显示3个视图,但一次只显示2个。当我按下按钮时,我希望最左边的视图向左滑动,中间的视图随之滑动,占据左视图的起始空间,最右边的视图应滑入屏幕 以下是一些屏幕截图: 动画之前: 动画期间(绘制编辑^^^): 动画之后: 这是我的布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
视图
,但一次只显示2个。当我按下按钮时,我希望最左边的视图向左滑动,中间的视图随之滑动,占据左视图的起始空间,最右边的视图应滑入屏幕
以下是一些屏幕截图:
动画之前:动画期间(绘制编辑^^^): 动画之后: 这是我的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="3" >
<FrameLayout
android:id="@+id/stations_stations"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:layout_weight="1"
android:background="@drawable/fragment_border" />
<FrameLayout
android:id="@+id/stations_singlestation"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:layout_weight="2"
android:background="@drawable/fragment_border" />
<FrameLayout
android:id="@+id/stations_trip"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:layout_weight="1"
android:background="@drawable/fragment_border"
android:visibility="gone" />
</LinearLayout>
这将设置窗口左侧最左侧视图的动画,并将其设置为“消失”。我还可以将中间视图设置为新位置的动画,但是当动画完成后,中间视图会在很短的时间内跳回到其原始位置,然后它会选择正确的位置。如何避免这种跳跃?使用
动画
滑入滑出。您需要在资源中将动画定义为xml
或者您可以使用ViewFlipper
SO和web上还有很多示例。将框架布局添加到ViewFlipper中。e、 g
<ViewFlipper>
<FrameLayout1/>
<FrameLayout2/>
<FrameLayout3/>
</ViewFlipper>
然后在代码中,对viewFlipper调用setInAnimation(leftInAnim)和setOutAnimation(leftOutAnim),并调用showNext(),这将使动画应用于当前视图和下一个视图
leftInAnim和leftOutAnim是一个XML动画资源,告诉系统如何为当前视图制作动画:例如
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
这将导致视图从右侧(视图外)滑入当前视图- 当子视图的可见性在
和可见
之间变化时,使用该类自动设置子视图的动画。该类可从API 11开始获得 对于示例代码,请查看sdk附带的示例。确切路径是消失
ApiDemos\src\com\example\android\api\animation\LayoutAnimationsHideShow.java
- 将视图添加到视图组或从视图组中删除视图时,使用类设置视图动画。在这里,您必须保留对已删除视图的引用,因为您希望稍后再次添加它。该类在所有版本的Android中都可用
示例代码路径:
ApiDemos\src\com\example\android\api\view\layoutimation
LinearLayout
中,您将获得所需的结果我认为您可以使用LinearLayout,然后按下按钮将第一个视图的可见性设置为View.Goe。然后,当您想要回它时,可以将其设置回View.VISIBLE。不知道,动画是如何工作的。这确实是我现在拥有的,但这不是一个很好的景象。试着玩一下,因为你没有实际显示导致问题的代码,任何人都很难真正帮助你。但是我可以同时显示两个视图吗?现在视图只显示它们自己。我已经编辑了我的问题。我认为ViewFlipper
并不是我所需要的。我正在使用LayoutTransition
类,您唯一要做的就是setLayoutTransition(newlayouttransition())
。谢谢
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>