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