利用Animation制作的Menu,点击button后,菜单慢慢的从上方展开来。,可以自定义菜单样式,效果很好。
这是源码。(右键取得图片地址下载,改名为rar即为源码项目)
package zhang.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.LinearLayout;
public class animationMenu extends Activity { /** Called when the activity is first created. */ //
//TranslateAnimation showAction, hideAction;
private Animation showAction, hideAction;
LinearLayout menu;
Button button;
Button button02;
boolean menuShowed;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
menu = (LinearLayout) findViewById(R.id.menu);
button = (Button) findViewById(R.id.button);
button02 = (Button) findViewById(R.id.button02);
// 这里是TranslateAnimation动画
showAction = new TranslateAnimation(
Animation.RELATIVE_TO_SELF,0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f,
Animation.RELATIVE_TO_SELF, 0.0f);
// 这里是ScaleAnimation动画 //
showAction = new ScaleAnimation(
1.0f,1.0f,0.0f,1.0f,Animation.RELATIVE_TO_SELF,0.0f,
Animation.RELATIVE_TO_SELF,0.0f);
showAction.setDuration(500);
// 这里是TranslateAnimation动画
hideAction = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f);
// 这里是ScaleAnimation动画
hideAction = new ScaleAnimation(1.0f,1.0f,1.0f,0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f);
hideAction.setDuration(500);
menuShowed = false;
menu.setVisibility(View.GONE);
button.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
// TODO Auto-generated method stub
if (menuShowed) {
menuShowed = false;
menu.startAnimation(hideAction);
menu.setVisibility(View.GONE);
}
else
{
menuShowed = true;
menu.startAnimation(showAction);
menu.setVisibility(View.VISIBLE);
}
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<LinearLayout android:id="@+id/menu"
android:layout_height="100px" android:layout_width="fill_parent"
android:layout_alignParentTop="true" android:background="#ffffff">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="I am a menu"
android:gravity="center" />
<Button
android:text="@+id/button02"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
<Button android:id="@+id/button" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_alignParentBottom="true"
android:text="Click to show/hide menu" />
</RelativeLayout>