简单的向上滑动视图动画

时间:2019-05-15 10:03:27

标签: android

我有这样的看法:

<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中找到了很多解决方案。我到底需要什么简单的解决方案?

3 个答案:

答案 0 :(得分:1)

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

要在我们的android应用程序中使用“向上滑动”或“向下滑动”动画,需要使用<scale>标签定义一个新的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:fromXDeltaandroid:fromYDeltaandroid:toYDeltaandroid: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);

答案 1 :(得分:0)

首先在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);

答案 2 :(得分:0)

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

对于活动从下至上:

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" />