我有这样的看法:
<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中找到了很多解决方案。我到底需要什么简单的解决方案?
答案 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: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);
答案 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" />