📌  相关文章
📜  如何在Android中添加KenBurns View?

📅  最后修改于: 2021-05-13 14:46:22             🧑  作者: Mango

在本文中,我们将学习如何使用Java在android中添加KenBurns View 。 KenBurns View是有用的库,它是ImageView的扩展。通过为Drawable设置动画效果,可以创建身临其境的体验。我们可以使用RandomTransitionGenerator来更改持续时间,并充当过渡的插补器。如果我们想对过渡有更多的控制,那么我们可以实现自己的TransitionGenerator
方法:

  1. build.gradle文件中添加支持库,并在“依赖项”部分中添加依赖项。通过此KenBurns视图,可以直接将其添加到xml文件中,并具有许多内置函数来轻松自定义它。
    dependencies {         
          implementation 'com.flaviofaria:kenburnsview:1.0.7'      
    }         
    
  2. 现在,将以下代码添加到activity_main.xml文件中。在此文件中,我们在布局中添加KenBurns View。
    activity_main.xml
    
    
      
        
      
    


    MainActivity.java
    package org.geeksforgeeks.gfganimatedGradient;
      
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.AccelerateDecelerateInterpolator;
    import com.flaviofaria.kenburnsview.KenBurnsView;
    import com.flaviofaria.kenburnsview.RandomTransitionGenerator;
      
    public class MainActivity extends AppCompatActivity {
        KenBurnsView kenBurnsView;
        boolean moving = true;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            kenBurnsView = findViewById(R.id.kView);
      
            AccelerateDecelerateInterpolator interpolator
                = new AccelerateDecelerateInterpolator();
      
            // It is used to change the duration and
            // the interpolator of transitions
            RandomTransitionGenerator generator
                = new RandomTransitionGenerator(2000, interpolator);
            kenBurnsView.setTransitionGenerator(generator);
      
            kenBurnsView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    if (moving) {
                        kenBurnsView.pause();
                        moving = false;
                    }
                    else {
                        kenBurnsView.resume();
                        moving = true;
                    }
                }
            });
        }
    }


  3. 现在,在MainActivity中添加以下代码。 Java文件。 onClickListener与kenBurns视图一起添加。如果动画在运动中,则动画将暂停,反之亦然。

    主要活动。Java

    package org.geeksforgeeks.gfganimatedGradient;
      
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.AccelerateDecelerateInterpolator;
    import com.flaviofaria.kenburnsview.KenBurnsView;
    import com.flaviofaria.kenburnsview.RandomTransitionGenerator;
      
    public class MainActivity extends AppCompatActivity {
        KenBurnsView kenBurnsView;
        boolean moving = true;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            kenBurnsView = findViewById(R.id.kView);
      
            AccelerateDecelerateInterpolator interpolator
                = new AccelerateDecelerateInterpolator();
      
            // It is used to change the duration and
            // the interpolator of transitions
            RandomTransitionGenerator generator
                = new RandomTransitionGenerator(2000, interpolator);
            kenBurnsView.setTransitionGenerator(generator);
      
            kenBurnsView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    if (moving) {
                        kenBurnsView.pause();
                        moving = false;
                    }
                    else {
                        kenBurnsView.resume();
                        moving = true;
                    }
                }
            });
        }
    }
    
  4. 现在编译并运行Android应用程序。

输出: