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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM