先看效果(第一次玩视频转GIF图片,效果可能有点小失望):
Android自带的界面切换效果一般是左右式的,感觉不是很舒服。为了让我们的应用更加人性化,可以自定义一些切换动画效果,下面列出了几种,如果感觉不是很满意,可以自己修改anim文件夹下动画文件的X,Y值等参数,下面有源代码附件:
MainActivity.java
public class MainActivity extends Activity implements OnClickListener {
Spinner sp=null;
Button btn_another=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp=(Spinner) findViewById(R.id.animation_sp);
btn_another=(Button) findViewById(R.id.btn_another);
// 通过资源文件获取Spinner填充内容
String[] ls = getResources().getStringArray(R.array.anim_type);
List<String> list = new ArrayList<String>();
// 把数组内容填充 到集合
for (int i = 0; i < ls.length; i++) {
list.add(ls[i]);
}
ArrayAdapter<String> animType = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, list);
animType.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(animType);
sp.setSelection(0);
btn_another.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, AnotherActivity.class);
startActivity(intent);
switch(sp.getSelectedItemPosition()){
case 0: //淡入淡出效果
overridePendingTransition(R.anim.fade, R.anim.hold);
break;
case 1: //放大淡出效果1
overridePendingTransition(R.anim.my_scale_action,
R.anim.my_alpha_action);
break;
case 2: //放大淡出效果2
overridePendingTransition(R.anim.wave_scale,
R.anim.my_alpha_action);
break;
case 3: //转动淡出效果1
overridePendingTransition(R.anim.scale_rotate,
R.anim.my_alpha_action);
break;
case 4: //转动淡出效果2
overridePendingTransition(R.anim.scale_translate_rotate,
R.anim.my_alpha_action);
break;
case 5: //左上角展开淡出效果
overridePendingTransition(R.anim.scale_translate,
R.anim.my_alpha_action);
break;
case 6: //压缩变小淡出效果
overridePendingTransition(R.anim.hyperspace_in,
R.anim.hyperspace_out);
break;
case 7: //下往上推出效果
overridePendingTransition(R.anim.push_up_in,
R.anim.push_up_out);
break;
case 8: //右往左推出效果
overridePendingTransition(R.anim.push_left_in,
R.anim.push_left_out);
break;
case 9: //左右交错效果
overridePendingTransition(R.anim.slide_left,
R.anim.slide_right);
break;
case 10: //缩小效果
overridePendingTransition(R.anim.zoom_enter,
R.anim.zoom_exit);
break;
case 11: //上下交错效果
overridePendingTransition(R.anim.slide_up_in,
R.anim.slide_down_out);
break;
}
}
}