【问题标题】:Simple slide up animation of view视图的简单上滑动画
【发布时间】:2019-05-15 10:03:27
【问题描述】:

我有这样的看法:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/...">

    <ImageView
        android:id="@+id/.."
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/black"
        android:src="@drawable/.."
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</android.support.constraint.ConstraintLayout>

我想创建简单而干净的动画,让我的 ImageView 从最底部(容器)滑动,并将 alpha(淡入)更改为容器的最顶部。

当您指定特定的幻灯片高度时,我在 stackoverflow 中找到了很多解决方案。从下到上是否有我需要的简单解决方案?

【问题讨论】:

标签: android


【解决方案1】:

我们需要创建一个 xml 文件,该文件定义要在 res 目录 (res/anim/slide_up.xml) 下的新文件夹 anim 中执行的动画类型,并具有所需的属性。如果 res 目录中不存在 anim 文件夹,请新建一个。

要在我们的android应用程序中使用Slide Up或Slide Down动画,需要定义一个带有&lt;scale&gt;标签的新xml文件,如下所示。

上滑动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0"
    android:fromYDelta="1000"
    android:duration="500"/>
</set>

对于滑动动画,

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

根据需要调整android:fromXDelta,android:fromYDelta,android:toYDelta,android:duration

如下定义你的xml

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/parentView>

    <ImageView
    android:id="@+id/.."
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@android:color/black"
    android:src="@drawable/.."
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

    </LinearLayout>



LinearLayout parent= (LinearLayout)findViewById(R.id.parentView);
Animation aniSlide = 
AnimationUtils.loadAnimation(getApplicationContext(),R.anim.slide_up);
parent.startAnimation(aniSlide);

【讨论】:

  • 这个从上到下滑动,滑动的距离和图片高度一样。我希望滑动距离是从容器底部到容器顶部。
  • 编辑了我的答案。为父视图使用动画,现在它将从上到下
【解决方案2】:

首先在 res/anim/ 中创建 Xml 文件

从左到右的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
 <translate android:fromXDelta="-100%" android:toXDelta="0%"
            android:fromYDelta="0%" android:toYDelta="0%"
            android:duration="700"/>
</set>

在您的活动中添加此代码:

this.overridePendingTransition(R.anim.where_start_animation,
               R.anim.where_leave_animation);

【讨论】:

  • 我想从下往上看,如有问题,非常感谢!
【解决方案3】:

你必须放四个动画文件,两个从下到上的动画,两个从上到下的动画:

对于活动自下而上:

override fun onCreate(savedInstanceState: Bundle?) {
    overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_up)
    super.onCreate(savedInstanceState)
}

对于活动自上而下:

  override fun onBackPressed() {
    overridePendingTransition(R.anim.slide_in_down, R.anim.slide_out_down)
    super.onBackPressed()
}

对于片段:

fun switchFragment1(fragment: Fragment, isAddBackStack: Boolean, tag: String) {
   val fragmentTransaction = supportFragmentManager.beginTransaction()
   fragmentTransaction.setCustomAnimations(R.anim.slide_in_up, R.anim.slide_out_up,
   R.anim.slide_in_down, R.anim.slide_out_down)

   if (isAddBackStack)
       fragmentTransaction.addToBackStack(null)
   fragmentTransaction.commitAllowingStateLoss()

}

slide_in_up

  <?xml version="1.0" encoding="utf-8"?>
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="100%p"
    android:toYDelta="0%p" />

slide_out_up

 <?xml version="1.0" encoding="utf-8"?>
 <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:duration="@android:integer/config_longAnimTime"
   android:fromYDelta="0%p"
   android:toYDelta="-100%p" />

slide_in_down

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
  android:duration="@android:integer/config_longAnimTime"
  android:fromYDelta="-100%p"
  android:toYDelta="0%p" />

slide_out_down

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:duration="@android:integer/config_longAnimTime"
   android:fromYDelta="0%p"
   android:toYDelta="100%p" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2018-04-25
    相关资源
    最近更新 更多