Android开发第七天(续)

Damon——层级菜单

eveMenu

主要布局(activity_main.xml)



 
     
 

    
        
        
        
    

    

        

        

        

        

        

        

        



主要实现(MainActivity.java)

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //记录第三次菜单的状态
    private boolean isLevel3Open = true;
    private boolean isLevel2Open = true;

    private RelativeLayout level3;
    private RelativeLayout level2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //加载容器布局
        level3 = findViewById(R.id.rl_level3);
        level2 = findViewById(R.id.rl_level2);


        //menu按钮
        ImageButton menu = findViewById(R.id.ib_menu);
        ImageButton home = findViewById(R.id.ib_home);
        //添加点击事件
        menu.setOnClickListener(this);
        home.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        //判断哪个按钮被点击
        switch (view.getId()) {
            case R.id.ib_menu:
                if (isLevel3Open) {
                    //关闭
                    close(level3,0);
                } else {
                    //打开
                    open(level3);
                }
                //改变状态
                isLevel3Open = !isLevel3Open;
                break;
            case R.id.ib_home:
                if (isLevel3Open){
                    //关闭第三层菜单
                    close(level3,0);
                    isLevel3Open=false;
                }

                if (isLevel2Open){
                    //关闭第二层菜单
                    close(level2,200);
                }else {
                    //打开第二层菜单
                    open(level2);
                }
                isLevel2Open=!isLevel2Open;
                break;
            default:
                break;
        }
    }

    public void open(RelativeLayout rl) {
        Animation in = AnimationUtils.loadAnimation(
                this, R.anim.rotat_in_anim);
        rl.startAnimation(in);
    }

    public void close(RelativeLayout rl,long delay) {
        Animation out = AnimationUtils.loadAnimation(
                this, R.anim.rotat_out_anim);
        out.setStartOffset(delay);
        rl.startAnimation(out);
    }
}

动画样式

out:


    

in:


    

你可能感兴趣的:(Android开发第七天(续))