【问题标题】:Android slide animation for linearlayout用于线性布局的 Android 幻灯片动画
【发布时间】:2015-07-05 15:21:20
【问题描述】:

我的 Android 应用程序的一个活动使用带有几个 textview 和一个 imageview 的线性布局。 textviews 和 imageview 从 sqlite 数据库中获取数据。 我还有两个按钮(上一个,下一个)来来回浏览数据库。工作正常。

现在我想向我的应用程序添加动画:当我按下下一个按钮时,线性布局(带有文本视图和图像)应该向左滑动,并且包含下一行数据的线性布局应该从右侧滑入.反之则为 prev 按钮。

知道如何解决这个问题吗?

【问题讨论】:

  • 包含数据的线性布局是另一个活动吗? :)

标签: android animation android-linearlayout slide


【解决方案1】:

您可以使用翻译补间动画来实现这一点。

将包含文本视图、图像视图和按钮的线性布局放置在父线性/相对布局中:

<LinearLayout android:id="@+id/parent_layout">
    <LinearLayout android:id="@+id/container_layout">
        <Textview />

        <ImageView />

        <Buttons />
    </LinearLayout>
</LinearLayout>

在 res/anim 文件夹中定义两个翻译补间动画,一个用于上一个,另一个用于下一个

 `previous.xml` -

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXDelta="-100%p"
    android:toXDelta="0">
</translate>

`next.xml` -

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromXDelta="100%p"
    android:toXDelta="0">
</translate>

初始化动画并在activity的onCreate()方法中获取“容器”布局的引用:

Animation previousAnim = AnimationUtils.loadAnimation(MainMenuActivity.this, R.anim.previous);
Animation nextAnim = AnimationUtils.loadAnimation(MainMenuActivity.this, R.anim.next);
LinearLayout containerLayout = (LinearLayout) findViewById(R.id.container_layout);

点击下一个和上一个时,浏览数据库,更新文本视图、图像视图等并触发动画

previousButtonOnClick {
    //navigate db and update views 
    containerLayout.startAnimation(previousAnim);
}

nextButtonOnClick {
    //navigate db and update views 
    containerLayout.startAnimation(nextAnim);
}

【讨论】:

  • 第二部分:我试过了:如果我点击上一个/下一个按钮,当前的线性布局会立即被清除,而不是滑出。新值按预期滑入。
  • 然后启动动画,在“清除”之前检查是否滑出
猜你喜欢
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2014-12-24
  • 1970-01-01
相关资源
最近更新 更多