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);
}
});
}
}