如何使视图可见并带有一些动画?

问题描述 投票:0回答:3

我有一个相对的布局,当网络连接不存在时,我需要显示该视图,而当连接恢复时,我需要显示该视图,我需要像youtube一样进行操作。 YT会在底部以绿色显示弹出窗口,有时视图会向下滑动。预先感谢,我是新来的。我在StackOverflow中找不到任何等效的答案

<RelativeLayout

        android:id="@+id/dashboard_xmpp_connection_status_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true"
        android:visibility="gone">

        <TextView
            android:id="@+id/dashboard_xmpp_connection_text"
            android:layout_width="match_parent"
            android:layout_height="33dp"
            android:animateLayoutChanges="true"
            style="@style/Connection_status"
            android:text="@string/msg_no_internet" />

    </RelativeLayout>
android animation view
3个回答
0
投票
    binding.filter.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (binding.filterExams.getVisibility() == View.VISIBLE) {
                Animation slide_down = AnimationUtils.loadAnimation(binding.filterExams.getRootView().getContext(),
                        R.anim.slide_up_filter);
                slide_down.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        binding.filterExams.setVisibility(View.GONE);
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });
                binding.filterExams.startAnimation(slide_down);

            } else {
                binding.filterExams.setVisibility(View.VISIBLE);
                Animation slide_down = AnimationUtils.loadAnimation(binding.filterExams.getRootView().getContext(),
                        R.anim.slide_down);

                binding.filterExams.startAnimation(slide_down);

            }
        }
    });

您可以在xml文件中添加动画文件,例如

这里我使用了上下滑动动画

slide_up_filter.xml

   <?xml version="1.0" encoding="utf-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android" 
   android:interpolator="@android:anim/linear_interpolator">
    <scale
    android:duration="250"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.0"
    android:toYScale="0.0" />
  </set>

slide_down.xml

 <?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/linear_interpolator">
<scale
    android:duration="250"
    android:fromXScale="1.0"
    android:fromYScale="0.0"
    android:toXScale="1.0"
    android:toYScale="1.0" />
 </set>

像这样有局部动画

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/linear_interpolator">
 <alpha
    android:duration="2000"
    android:fromAlpha="0.1"
    android:toAlpha="1.0">
 </alpha>
 </set>

 fade_out.xml

 <?xml version="1.0" encoding="utf-8"?>
 <alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />

0
投票

您可以使用Support(androidx)包中提供的Transition API。

要使用此方法,您必须调用TransitionManager.geginDelayedTransition方法,并根据需要将视图的可见性更改为visible并消失。

  private void slideView(boolean show) {
        Transition transition = new Slide(Gravity.BOTTOM);
        transition.setDuration(600);
        transition.addTarget(R.id.id_of_relative_layout);

        TransitionManager.beginDelayedTransition(parent, transition);
        if(show){
           relativeView.setVisibility(View.VISIBLE);
        }
        else{
           relativeView.setVisibility(View.GONE);
        }
   }

在要执行的操作上调用slideView()函数。

有关更多详细信息,请遵循此-Show and hide a View with a slide up/down animation


0
投票

因此您可以使用LottieAnimationView

您的应用程序gradle文件

implementation 'com.airbnb.android:lottie:3.0.7'//2.7.0

转到此网站签名并下载免费的lottie json文件

please click

   step 1:put this download lottie json file to android studio assets folder

您的布局文件

  <RelativeLayout

    android:id="@+id/dashboard_xmpp_connection_status_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateLayoutChanges="true"
    android:visibility="gone">

    <com.airbnb.lottie.LottieAnimationView
         android:id="@+id/showAnimations"
         android:layout_gravity="center"
         android:layout_height="66dp"
         android:layout_width="56dp"
         android:visibility="gone"
         app:lottie_autoPlay="true"
         app:lottie_loop="false"
        app:lottie_fileName="animsix.json" <!--please put your download  json file -->
                />        


</RelativeLayout>
© www.soinside.com 2019 - 2024. All rights reserved.