Damon——层级菜单

eveMenu
主要布局(activity_main.xml)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="100dp"
android:layout_height="50dp"
android:background="@drawable/level1"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
<ImageButton
android:id="@+id/ib_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_home"
android:background="@null"
android:layout_centerInParent="true"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_level2"
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@drawable/level2"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true">
<ImageButton
android:id="@+id/ib_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_menu"
android:layout_centerHorizontal="true"
android:background="@null"
android:layout_marginTop="3dp"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_search"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginTop="3dp"
android:background="@null"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_myyouku"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginTop="3dp"
android:background="@null"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_level3"
android:layout_width="300dp"
android:layout_height="150dp"
android:background="@drawable/level3"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="130dp"
android:background="@null"
android:src="@drawable/channel1" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="187dp"
android:layout_marginBottom="91dp"
android:background="@null"
android:src="@drawable/channel5" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
android:background="@null"
android:src="@drawable/channel2" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="253dp"
android:layout_marginBottom="-1dp"
android:background="@null"
android:src="@drawable/channel3" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="233dp"
android:layout_marginBottom="56dp"
android:background="@null"
android:src="@drawable/channel4" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="20dp"
android:layout_marginBottom="56dp"
android:background="@null"
android:src="@drawable/channel6" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="77dp"
android:layout_marginBottom="91dp"
android:background="@null"
android:src="@drawable/channel7" />
</RelativeLayout>
</RelativeLayout>
主要实现(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:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:duration="1000">
<rotate android:fromDegrees="0"
android:toDegrees="-180"
android:pivotX="50%"
android:pivotY="100%"/>
</set>
in:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:duration="1000">
<rotate android:fromDegrees="-180"
android:toDegrees="0"
android:pivotX="50%"
android:pivotY="100%"/>
</set>