Android基礎-啓動和退出動畫

Android中活動的動畫問題

當從一個活動進入到另外的一個活動的時候。有很多的進入方式。這些進入的方式使得活動變的更加“優雅”

1、Google在SDK中集成的Activity切換動畫效果

通過這個方法可以去處理:
overridePendingTransition(enterAnim,exitAnim)

  • 第一個參數指的是ActivityA進入ActivityB時,B的動畫效果。
  • 第二個參數指的是ActivityA進入ActivityB時,離開A的動畫效果。
    注意:
    • 這個方法需要在startActivty和finish方法調用之後立即執行。
    • 若A進入B,或者 B離開A 的時候不需要動畫,可以傳人值0。

2、自定義Activity切換時效果(文件夾:anim)

首先在res目錄下新建anim文件夾,然後新建zoomin.xml文件,具體代碼如下所示:

// zoomin
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXScale="2.0"
        android:fromYScale="2.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:toXScale="1.0"
        android:toYScale="1.0"
        >
    </scale>
</set>

對scale屬性的解釋:

  • android:duration:指的是動畫的時間(毫秒爲單位)
  • android:fromXScale:指的是X尺寸比例
  • android:fromYScale:指的是Y尺寸比例
  • android:pivotX:縮放起點X軸座標,取值(50,50%,50%p)
  • android:pivotY:同X
  • android:toXScale:最終X尺寸比例
  • android:toYScale:最終Y尺寸比例

在res目錄下新建anim文件夾,然後新建zoomout.xml文件,具體代碼如下所示:

// An highlighted block
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="@android:integer/config_mediumAnimTime"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:pivotX="50%p"
        android:pivotY="50%p"
        android:fromXScale=".5"
        android:fromYScale=".5">
    </scale>
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:toAlpha="0"
        android:fromAlpha="1.0">
    </alpha>
</set>

對alpha屬性的解釋:
android:duration:指的是時間
android:toAlpha:動畫開始的透明度
android:fromAlpha:動畫結束的透明度

注意:取值範圍爲:(0.0~1.0)

最後使用overridePendingTransition(in,out)在活動中去調用。

// An highlighted block
public class MainActivity extends AppCompatActivity {
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=findViewById(R.id.text_View);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
                overridePendingTransition(R.anim.zoomin,R.anim.zoomout);
            }
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章