Das*_*all 17 animation android visibility android-animation
我有一个invisible默认的视图(只是第一次).
现在我需要的可视性切换到VISIBLE与此animation:
if (myView.getVisibility() == View.INVISIBLE) {
myView.setVisibility(View.VISIBLE);
myView.animate().translationY(0);
}
Run Code Online (Sandbox Code Playgroud)
(就像SnackBar默认动画一样)
但这不起作用.它将使用默认动画变为可见
有什么简单的方法可以达到这个目的吗?
注意
我想要解雇我的观点,就像这样:
myView.animate().translationY(myView.getHeight());
Run Code Online (Sandbox Code Playgroud)
Fer*_*med 30
你可以使用XML动画做到这一点.
使用和创建slide-up动画并将其放入资源文件夹中.XMLsetalphaXMLanim
slide_up.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="500"
android:fromYDelta="100%"
android:toYDelta="0" />
</set>
Run Code Online (Sandbox Code Playgroud)
使用:
用于AnimationUtils.loadAnimation()从中加载动画XML并使用.startAnimation()方法设置和启动动画.
这是一个例子:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
// slide-up animation
Animation slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up);
if (imageView.getVisibility() == View.INVISIBLE) {
imageView.setVisibility(View.VISIBLE);
imageView.startAnimation(slideUp);
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助〜
使用ConstraintLayout添加动画
只需在其可见性已更新的视图上方添加以下代码:
TransitionManager.beginDelayedTransition(constraintLayout)
Run Code Online (Sandbox Code Playgroud)
注意:
- ConstraintLayout将仅在其直接子代上执行动画,因为它仅知道何时更改其处理的子代上的布局参数和约束。
- ConstraintLayout仅对与布局相关的更改设置动画。
有关更多信息,请参阅此帖子https://robinhood.engineering/beautiful-animations-using-android-constraintlayout-eee5b72ecae3
这是动画视图可见性的最佳方法:
private void viewGoneAnimator(final View view) {
view.animate()
.alpha(0f)
.setDuration(500)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(View.GONE);
}
});
}
private void viewVisibleAnimator(final View view) {
view.animate()
.alpha(1f)
.setDuration(500)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(VISIBLE);
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后在您想让视图可见或消失的任何地方调用此方法,并将预期视图作为参数提供给方法。
小智 8
只是您需要添加android:animateLayoutChanges="true"到您的布局中。当我将可见性设置为 时linear_container,linear_bottom将从下到上进行动画处理并取代“线性容器”。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/layoutTop"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:id="@+id/linear_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
</LinearLayout>
<LinearLayout
android:id="@+id/linear_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31022 次 |
| 最近记录: |