Android 關於 Activity 之間的切換動畫

來源:互聯網
上載者:User


屬性ApiDemo的朋友應該都知道,其實在android2.0中就已經可以很簡單的實現Activity 之間的動畫轉場效果。
在startActivity 後調用 overridePendingTransition(int enterAnim,int exitAnim),就可以實現Activity之間的動畫,
其中enterAnim 是下一個Activity的enter動畫效果,exitAnim 是當前Actitvity退出的動畫效果,
在anim的file中可以定義動畫,就跟定義控制項的動畫一樣,這裡就不多種解釋了,相信大家多控制項的動畫都比較熟悉了。好現在開始貼下部分代碼,以下是25個簡單的Activity之間的轉場效果。

  package com.asai.android.demo;  

import android.app.Activity;   
import android.content.Intent;   
import android.os.Bundle;   
import android.view.View;   
import android.widget.ArrayAdapter;   
import android.widget.Button;   
import android.widget.Spinner;   
  
public class demoMain extends Activity {   
    private Button btnDemo;   
    private Spinner sprAnim;   
  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
           
        btnDemo = (Button) findViewById(R.id.btnDemo);   
        sprAnim = (Spinner) findViewById(R.id.sprAnim);   
        //Spinner的內容適配器   
ArrayAdapter<?> animType = ArrayAdapter.createFromResource(this,   
                R.array.anim_type, android.R.layout.simple_spinner_item);   
        animType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);   
        sprAnim.setAdapter(animType);   
                //預設選中第一項   
        sprAnim.setSelection(0);   
        btnDemo.setOnClickListener(new View.OnClickListener() {   
            public void onClick(View view) {   
                startActivity(new Intent(demoMain.this, demoDetail.class));   
                switch (sprAnim.getSelectedItemPosition()) {   
                case 1:   
                //淡入淡出效果       
  
overridePendingTransition(R.anim.fade, R.anim.hold);   
                    break;   
                case 2:   
                    overridePendingTransition(R.anim.alpha_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 3:   
                    overridePendingTransition(R.anim.alpha_scale_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 4:   
                    overridePendingTransition(   
                            R.anim.alpha_scale_translate_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 5:   
                    overridePendingTransition(R.anim.alpha_scale_translate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 6:   
                //中心放大效果   
  
    overridePendingTransition(R.anim.alpha_scale,   
                            R.anim.my_alpha_action);   
                    break;   
                case 7:   
                    overridePendingTransition(R.anim.alpha_translate_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 8:   
                    overridePendingTransition(R.anim.alpha_translate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 9:   
                    overridePendingTransition(R.anim.my_rotate_action,   
                            R.anim.my_alpha_action);   
                    break;   
                case 10:   
                    overridePendingTransition(R.anim.my_scale_action,   
                            R.anim.my_alpha_action);   
                    break;   
                case 11:   
                    overridePendingTransition(R.anim.my_translate_action,   
                            R.anim.my_alpha_action);   
                    break;   
                case 12:   
                    overridePendingTransition(R.anim.myanimation_simple,   
                            R.anim.my_alpha_action);   
                    break;   
                case 13:   
                    overridePendingTransition(R.anim.myown_design,   
                            R.anim.my_alpha_action);   
                    break;   
                case 14:   
                    overridePendingTransition(R.anim.scale_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 15:   
                    overridePendingTransition(R.anim.scale_translate_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 16:   
                    overridePendingTransition(R.anim.scale_translate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 17:   
                    overridePendingTransition(R.anim.translate_rotate,   
                            R.anim.my_alpha_action);   
                    break;   
                case 18:   
                    overridePendingTransition(R.anim.hyperspace_in,   
                            R.anim.hyperspace_out);   
                    break;   
                case 19:   
                    overridePendingTransition(R.anim.shake,   
                            R.anim.my_alpha_action);   
                    break;   
                case 20:   
                    overridePendingTransition(R.anim.push_left_in,   
                            R.anim.push_left_out);   
                    break;   
                case 21:   
                //從下方移出效果   overridePendingTransition(R.anim.push_up_in,   
                            R.anim.push_up_out);   
                    break;   
                case 22:   
                    overridePendingTransition(R.anim.slide_left,   
                            R.anim.slide_right);   
                    break;   
                case 23:   
                    overridePendingTransition(R.anim.slide_top_to_bottom,   
                            R.anim.my_alpha_action);   
                    break;   
                case 24:   
                    overridePendingTransition(R.anim.wave_scale,   
                            R.anim.my_alpha_action);   
                    break;   
                }   
            }   
        });   
    }   
}  
anim檔案夾中定義的動畫xml(注這些動畫部分是之前用在控制項上的也可以用在Activity之間(有的是網路上收集的有的是ApiDemo中的定義檔案,當然你也可以自己增加自己想要的效果,看你的創意了呵呵

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.