Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。
下面就讲一下Tweene Animations。
主要类:
Animation 动画
AlphaAnimation 渐变透明度
RotateAnimation 画面旋转
ScaleAnimation 渐变尺寸缩放
TranslateAnimation 位置移动
AnimationSet 动画集
一、等待动画实现
在我们应用程序当中,经常会使用到等待动画,那么首先我们就来实现这个
1.1首先,当然是布局啦
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
>
<RelativeLayout
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_centerInParent="true"
android:background="@drawable/loading_bg" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正在登录"
android:layout_marginTop="10dp"
android:textColor="#fff"
android:textSize="20sp"
/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
1.2其次,就是实现啦
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//延迟一段时间后跳转到另一个界面
new Handler().postDelayed(new Runnable(){
@Override
public void run(){
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
MainActivity.this.finish();
Toast.makeText(getApplicationContext(), "跳转成功", Toast.LENGTH_SHORT).show();
}
}, 2000);
}
}
1.3实现效果如图
二、开门动画实现
2.1首先,当然是布局啦
second.xml
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000"
>
<ImageView
android:id="@+id/imageLeft"
android:scaleType="fitXY"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:src="@drawable/w_left" />
<ImageView
android:id="@+id/imageRight"
android:visibility="visible"
android:scaleType="fitXY"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:src="@drawable/w_right" />
<TextView
android:id="@+id/anim_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_marginTop="35dp"
android:text=" \n \nthis is a test!\n \n "
android:textSize="22sp"
android:textColor="#fff"
/>
</RelativeLayout>
2.2其次,就是实现啦
SecondActivity.java
public class SecondActivity extends Activity
{
private ImageView mLeft;
private ImageView mRight;
private TextView mText;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
mLeft = (ImageView)findViewById(R.id.imageLeft);
mRight = (ImageView)findViewById(R.id.imageRight);
mText = (TextView)findViewById(R.id.anim_text);
//往左移动
AnimationSet anim = new AnimationSet(true);
TranslateAnimation mytranslateanim = new TranslateAnimation(Animation.RELA