package com.duguang.baseanimation.ui.imitate; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; import com.duguang.baseanimation.R; import com.duguang.baseanimation.ui.base.BaseActivity; import com.duguang.baseanimation.utils.Utils; public class YouKuActivity extends BaseActivity implements OnClickListener { private final String TAG = "MainActivity"; private boolean isDisplayMenu = false; // 菜单的显示状态, 默认为不显示 private boolean isDisplayLevel2 = false; // 二级菜单的显示状态, 默认为不显示 private boolean isDisplayLevel3 = false; // 三级菜单的显示状态, 默认为不显示 private RelativeLayout rlLevel1; private RelativeLayout rlLevel2; private RelativeLayout rlLevel3; private Button bt_show; private TextView tv_text; @Override public void setView() { setContentView(R.layout.activity_imitate_youku); } @Override public void initView() { rlLevel1 = (RelativeLayout) findViewById(R.id.rl_level1); rlLevel2 = (RelativeLayout) findViewById(R.id.rl_level2); rlLevel3 = (RelativeLayout) findViewById(R.id.rl_level3); bt_show = (Button) findViewById(R.id.bt_show); tv_text = (TextView) findViewById(R.id.tv_text); rlLevel1.setVisibility(View.GONE); rlLevel2.setVisibility(View.GONE); rlLevel3.setVisibility(View.GONE); } @Override public void setListener() { findViewById(R.id.ib_home).setOnClickListener(this); findViewById(R.id.ib_menu).setOnClickListener(this); bt_show.setOnClickListener(this); } @Override public void onClick(View arg0) { if(Utils.isRunningAnimation()) return; switch (arg0.getId()) { case R.id.ib_home: if(isDisplayLevel2) { long startOffset = 0; if(isDisplayLevel3) { Utils.startOutRotateAnimation(rlLevel3, startOffset); isDisplayLevel3 = !isDisplayLevel3; startOffset = 200; } // 隐藏二级菜单 Utils.startOutRotateAnimation(rlLevel2, startOffset); } else { // 显示二级菜单 Utils.startInRotateAnimation(rlLevel2, 0); } isDisplayLevel2 = !isDisplayLevel2; break; case R.id.ib_menu: if(isDisplayLevel3) { // 隐藏三级菜单 Utils.startOutRotateAnimation(rlLevel3, 0); } else { // 显示三级菜单 Utils.startInRotateAnimation(rlLevel3, 0); } isDisplayLevel3 = !isDisplayLevel3; break; case R.id.bt_show: if(showMeun()){ bt_show.setText("关闭优酷菜单"); }else{ bt_show.setText("出现优酷菜单"); } startAnimation(); break; default: break; } } /** * 优酷菜单是否显示 * @return */ private boolean showMeun() { if(Utils.isRunningAnimation()) return true; Log.i(TAG, "菜单键被点击了.."); if(isDisplayMenu) { long startOffset = 0; // 隐藏菜单 if(isDisplayLevel2) { // 二级菜单显示状态, 隐藏 if(isDisplayLevel3) { // 三级菜单显示状态, 隐藏它 Utils.startOutRotateAnimation(rlLevel3, startOffset); startOffset = 200; isDisplayLevel3 = !isDisplayLevel3; } Utils.startOutRotateAnimation(rlLevel2, startOffset); startOffset += 200; isDisplayLevel2 = !isDisplayLevel2; } // 隐藏一级菜单 Utils.startOutRotateAnimation(rlLevel1, startOffset); } else { // 显示菜单 // 判断菜单是否是为View.GONE的状态 if(rlLevel1.getVisibility() == View.GONE && rlLevel2.getVisibility() == View.GONE && rlLevel3.getVisibility() == View.GONE) { // 设置菜单显示 rlLevel1.setVisibility(View.VISIBLE); rlLevel2.setVisibility(View.VISIBLE); rlLevel3.setVisibility(View.VISIBLE); } Utils.startInRotateAnimation(rlLevel1, 0); Utils.startInRotateAnimation(rlLevel2, 200); Utils.startInRotateAnimation(rlLevel3, 400); isDisplayLevel2 = !isDisplayLevel2; isDisplayLevel3 = !isDisplayLevel3; } return isDisplayMenu = !isDisplayMenu; } public void startAnimation(){ Animation anim = AnimationUtils.loadAnimation(this, R.anim.small_2_big); tv_text.startAnimation(anim); } }