实现闪烁的星星

在Android中,通过创建透明度渐变动画(AlphaAnimation)可以实现图片由显示到逐渐隐藏,再逐渐显示的过程。通过这一个动画可以实现闪烁的星星,
####实现过程
(1)在新建项目的res目录中,首先创建一个名称为anim的目录,并在该目录中,添加一个名称为flare.xml的XML资源文件,在该文件中定义一个实现透明度渐变的动画,该动画为从完全不透明到完全透明,再到完全不透明的渐变过程,具体代码如下:



    

(2)修改新建项目的res/layout目录下的布局文件activity_main.xml,将默认添加的线性布局管理器和TextView组件删除,添加一个帧布局管理器,并在其中添加一个ImageView组件,代码如下:




        


(3)打开默认创建的MainActivity,在其onCreat方法中,首先获取定义的动画资源及要应用动画效果的ImageView组件,然后调用startAnimation方法应用动画效果,从而实现闪烁的星星。代码如下:

package com.example.shenfan.staralpha;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Animation flare = AnimationUtils.loadAnimation(this,R.anim.flare);//获取"透明度变化"动画资源
        final ImageView iv = (ImageView)findViewById(R.id.imageView1);//获取要应用动画效果的ImageView
        iv.setX(100);//设置星星的X坐标位置
        iv.setY(50);//设置星星的Y坐标位置
        iv.startAnimation(flare);//应用动画效果
    }
}

运行截图如下:
实现闪烁的星星_第1张图片
实现闪烁的星星_第2张图片
实现闪烁的星星_第3张图片

简单来说就是,将背景图和星星都放在一个layout里面,然后给android:background添加背景图,然后再放置一个ImageView,在活动中,只需要将从ImageView获取的id,与另一个layout结合即可,而这另一个layout,就是放置的渐变。

可下载:
https://download.csdn.net/download/ancientear/10672407

在上述实例中也可以实现同时有多颗星星闪烁的效果

1、修改activity_main,在其中添加5个ImageView组件




        


        

        

        

        



2、打开之前的MainActivity,在其onCreat方法中,首先获取定义的动画资源及要应用动画效果的多个ImageView组件,并使用Java中的Random类随机获取ImageView组件的索引,然后饮用该索引调用startAnimation方法应用动画效果,从而实现同时有多个星星闪烁的效果。

package com.example.shenfan.staralpha;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

    ImageView[] iv = new ImageView[5];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Animation flare = AnimationUtils.loadAnimation(this,R.anim.flare);//获取"透明度变化"动画资源
        iv[0] = (ImageView)findViewById(R.id.imageView1);//获取要应用动画效果的ImageView
        iv[1] = (ImageView)findViewById(R.id.imageView2);
        iv[2] = (ImageView)findViewById(R.id.imageView3);
        iv[3] = (ImageView)findViewById(R.id.imageView4);
        iv[4] = (ImageView)findViewById(R.id.imageView5);
        for(int i = 0 ; i < 5 ; i++) {
            Random random = new Random(new java.util.Date().getTime() + i);
            iv[i].setX(random.nextInt(200) + 50) ;//设置星星的X坐标位置
            iv[i].setY(random.nextInt(20) + 5);//设置星星的Y坐标位置
            iv[i].startAnimation(flare);//应用动画效果
        }
    }
}

你可能感兴趣的:(★-,#,--)