Android 动画-alpha(渐变透明度动画效果)

  今天苦于思索应用如何美观,首先从载入页面的第一眼开始,Android动画分为四种:alpha(渐变透明度),scale(渐变尺寸伸缩),translate(画面转换位置移动),rotate(画面转移旋转);今天先写第一个动画alpha。

  动画效果有两种实现:

  一、在xml中定义:

  alpha.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 透明度控制动画效果 alpha
            浮点型值:
                fromAlpha 属性为动画起始时透明度
                toAlpha   属性为动画结束时透明度
                        说明: 
                    0.0表示完全透明
                    1.0表示完全不透明
                        以上值取0.0-1.0之间的float数据类型的数字
    
            长整型值:
                duration  属性为动画持续时间
                        说明:     
                            时间以毫秒为单位
    -->
    
    <alpha 
        android:fromAlpha="0.1"
        android:toAlpha="1.0"
        android:duration="5000"
        />
    
</set>

  二、在页面Activity中声明:

Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(5000);

完成动画渐变透明度的参数设定后,我们就要开始在应用中使用它:

public class SplashActivity extends Activity{
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome);
        
        View view  = View.inflate(SplashActivity.this, R.layout.welcome, null);
        setContentView(view);
        //动画效果参数直接定义
        Animation animation = new AlphaAnimation(0.1f, 1.0f);
        animation.setDuration(5000);
        
        //动画效果从XMl文件中定义
//        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
        view.setAnimation(animation);
    }
}

这样我们就完成了预定的动画效果,但是我们的最终目的是动画效果完毕以后跳转到相应的页面,所以我们对动画添加了监听:

animation.setAnimationListener(new AnimationListener() {
            
            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(SplashActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });

这样的话,我们在动画的持续时间中预加载我们的资源,当动画结束以后跳转到我们的主页面;

代码:http://pan.baidu.com/share/link?shareid=222077530&uk=3909095065

今天想做一个类似于人人的效果,实现目标为:背景图渐变,下方的文本框不随之渐变

目标图:

XML布局代码 :activity_main.xml

<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ImageView  
        android:id="@+id/backImage"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:scaleType="center"
        android:background="@drawable/v5_3_0_guide_pic3" />
    <TextView
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginBottom="20dip"
        android:layout_gravity="center_horizontal|bottom"
        android:padding="12dip"
        android:background="#AA000000"
        android:textColor="#ffffffff"
        android:text="Golden Gate" />
</merge>

主页面Activity代码:MainActivity.java

public class MainActivity extends Activity {

    ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        image = (ImageView) findViewById(R.id.backImage);
//        View view  = View.inflate(MainActivity.this, R.id.backImage, null);
        //动画效果参数直接定义
        Animation animation = new AlphaAnimation(0.1f, 1.0f);
        animation.setDuration(5000);
        
        //动画效果从XMl文件中定义
//        Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);
        image.setAnimation(animation);
        animation.setAnimationListener(new AnimationListener() {
            
            @Override
            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
//                Intent intent = new Intent(MainActivity.this,MainActivity.class);
//                startActivity(intent);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

目的达到了,源码:http://pan.baidu.com/share/link?shareid=1973122666&uk=3909095065

 

posted @ 2013-07-02 18:08  似水流云  阅读(22359)  评论(0编辑  收藏  举报