Android Tween Animation 补间动画
本章节我们来写一个范例,使用补间动画 (Tween Animation ) 将登陆面板从底部弹出
-
创建一个 空的 Android 项目
cn.twle.android.TweenLogin
-
修改布局文件
activity_main.xml
<?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#dddddd"> <Button android:id="@+id/btn_show_panel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#F26968" android:gravity="center" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="注册 or 登陆 " android:textColor="#FFFFFF"/> <LinearLayout android:id="@+id/login_panel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:visibility="gone"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#F26968" android:gravity="center" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="登陆" android:textColor="#FFFFFF"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#323339" android:gravity="center" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="注册" android:textColor="#FFFFFF"/> </LinearLayout> </RelativeLayout>
-
修改 MainActivity.java
package cn.twle.android.tweenlogin; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.TranslateAnimation; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extends AppCompatActivity { private LinearLayout login_panel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn_show_panel = (Button) findViewById(R.id.btn_show_panel); login_panel = (LinearLayout) findViewById(R.id.login_panel); btn_show_panel.setOnClickListener(new View.OnClickListener(){ @Override public void onClick( View view) { //设置动画,从自身位置的最下端向上滑动了自身的高度,持续时间为 500 ms final TranslateAnimation ctrlAnimation = new TranslateAnimation( TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 0, TranslateAnimation.RELATIVE_TO_SELF, 1, TranslateAnimation.RELATIVE_TO_SELF, 0); // 设置动画的过渡时间 ctrlAnimation.setDuration(500l); login_panel.postDelayed(new Runnable() { @Override public void run() { login_panel.setVisibility(View.VISIBLE); login_panel.startAnimation(ctrlAnimation); } }, 1000); } }); } }