美文网首页Android知识Android开发Android技术知识
在Android中制作移动的渐变背景

在Android中制作移动的渐变背景

作者: 小菜鸟程序媛 | 来源:发表于2017-04-10 09:13 被阅读976次

    原文地址:http://thetechnocafe.com/make-a-moving-gradient-background-in-android/
    这是一个关于如何在Android上制作移动渐变背景的快速教程。
    为了实现这个,我们需要使用AnimationList,现在让我们开始吧。

    首先我们需要创建5个渐变的drawables,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
      <gradient
            android:angle="225"
            android:endColor="#1a2980"
            android:startColor="#26d0ce"/>
    </shape>
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
      <gradient
            android:angle="45"
            android:endColor="#614385"
            android:startColor="#516395"/>
    </shape>
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
      <gradient
            android:angle="135"
            android:endColor="#1d2b64"
            android:startColor="#f8cdda"/>
    </shape>
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
      <gradient
            android:angle="45"
            android:endColor="#ff512f"
            android:startColor="#dd2476"/>
    </shape>
    
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
      <gradient
            android:angle="135"
            android:endColor="#34e89e"
            android:startColor="#0f3443"/>
    </shape>
    

    然后再一个新的xml drawable文件中添加如下代码,包含一个AnimationList用来改变background从一个渐变到另一个渐变,在AnimationList标签中,添加5个item。

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android">
      
    <item android:drawable="@drawable/gradient_blue"
          android:duration="5000"/>
    <item android:drawable="@drawable/gradient_red"
          android:duration="5000"/>
    <item android:drawable="@drawable/gradient_teal"
          android:duration="5000"/>
    <item android:drawable="@drawable/gradient_purple"
          android:duration="5000"/>
    <item android:drawable="@drawable/gradient_indigo"
          android:duration="5000"/>
    
    </animation-list>
    

    现在将它作为背景设置到activity的根布局上,并且不要忘了给View/ViewGroup设置一个id,我们需要在java代码中引用他。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/tools"
      android:id="@+id/match_parent"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@drawable/gradient_animation_list"
      android:orientation="vertical">
    
      <!--Content goes here-->
    </LinearLayout>
    

    现在我们需要做的就是在java代码中告诉animation list开启动画,我们可以调用AnimationDrawable.start()方法,代码如下:

    LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linear_layout);
    AnimationDrawable animationDrawable = (AnimationDrawable)linearLayout.getBackground();
    
    animationDrawable.setEnterFadeDuration(2500);
    animationDrawable.setExitFadeDuration(5000);
    animationDrawable.start();
    

    可以看到,我们引用了将动画列表作为背景的LinearLayout,然后我们从AnimationDrawable中获取他的背景,然后我们设置进入和退出动画的持续时间,并启动它。

    相关文章

      网友评论

        本文标题:在Android中制作移动的渐变背景

        本文链接:https://www.haomeiwen.com/subject/gvzjattx.html