系统控件组合式(案例一)

—————————–案例一—————动画效果不截图了————————————-

activity_main.xml

<RelativeLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent" ><RelativeLayoutandroid:id="@+id/level3"android:layout_width="280dip"android:layout_height="140dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:background="@drawable/level3" ><ImageViewandroid:id="@+id/channel4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="5dip"android:src="@drawable/channel4" /></RelativeLayout><RelativeLayoutandroid:id="@+id/level2"android:layout_width="180dip"android:layout_height="90dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:background="@drawable/level2" ><ImageViewandroid:id="@+id/icon_menu"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="6dip"android:src="@drawable/icon_menu" /></RelativeLayout><RelativeLayoutandroid:id="@+id/level1"android:layout_width="100dip"android:layout_height="50dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:background="@drawable/level1" ><ImageViewandroid:id="@+id/icon_home"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/icon_home" /></RelativeLayout></RelativeLayout>MainActivity.javapackage com.atguigu.youkmenudemo;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.RelativeLayout;public class MainActivity extends Activity implements OnClickListener {// 一级列表private ImageView icon_home;// 二级列表private ImageView icon_menu;private RelativeLayout level1;private RelativeLayout level2;private RelativeLayout level3;// 标石一二三级列表是否显示private boolean isShowlevel3 = true;private boolean isShowlevel2 = true;private boolean isShowlevel1 = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);icon_home = (ImageView) findViewById(R.id.icon_home);icon_menu = (ImageView) findViewById(R.id.icon_menu);level1 = (RelativeLayout) findViewById(R.id.level1);level2 = (RelativeLayout) findViewById(R.id.level2);level3 = (RelativeLayout) findViewById(R.id.level3);// 设置点击监听icon_home.setOnClickListener(this);icon_menu.setOnClickListener(this);}/* * 点击事件 */@Overridepublic void onClick(View v) {switch (v.getId()) {//如果点击一级列表,如果二级列表显示就将其隐藏,如果三级列表显示就将其隐藏case R.id.icon_home:if (isShowlevel2) {Tools.hipeView(level2);isShowlevel2 = false;if (isShowlevel3) {//三级列表隐藏动画延迟效果Tools.hipeView(level3, 200);isShowlevel3 = false;}} else {//如果二级列表隐藏就将其显示出来Tools.showView(level2);isShowlevel2 = true;}break;//如果点击二级列表,如果三级列表显示就将其隐藏,,如果三级列表隐藏就将其显示case R.id.icon_menu:if (isShowlevel3) {Tools.hipeView(level3);isShowlevel3 = false;} else {Tools.showView(level3);isShowlevel3 = true;}break;default:break;}}/** * 按键事件 */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//如果一级列表显示就将其隐藏,如果二级列表显示就将其隐藏,如果三级列表显示就将其隐藏if (keyCode == KeyEvent.KEYCODE_MENU) {if (isShowlevel1) {Tools.hipeView(level1);isShowlevel1 = false;if (isShowlevel2) {//二级列表比一级列表滞后Tools.hipeView(level2, 200);isShowlevel2 = false;if (isShowlevel3) {//三级列表比二级列表滞后Tools.hipeView(level3, 400);isShowlevel3 = false;}}} else {//如果一级列表隐藏就将其显示,Tools.showView(level1);isShowlevel1 = true;//如果二级列表隐藏就将其显示(比一级滞后)Tools.showView(level2, 200);isShowlevel2 = true;}return true;}return super.onKeyDown(keyCode, event);}}Tools.javapackage com.atguigu.youkmenudemo;import android.view.View;import android.view.ViewGroup;import android.view.animation.RotateAnimation;/** * 隐藏和显示各级菜单的工具类 */public class Tools {public static void hipeView(ViewGroup view) {hipeView(view, 0);}public static void showView(ViewGroup view) {showView(view, 0);}public static void hipeView(ViewGroup view, int startOffset) {RotateAnimation ra = new RotateAnimation(0, 180, view.getWidth() / 2,view.getHeight());// 设置动画的播放时间ra.setDuration(500);// 延迟多长时间开始播放ra.setStartOffset(startOffset);// 停留在动画播放后的状态ra.setFillAfter(true);view.startAnimation(ra);int childCount = view.getChildCount();//遍历所有的孩子,把每个孩子设置为不可用点击for(int i=0;i<childCount;i++){View childView = view.getChildAt(i);childView.setEnabled(false);//childView.setVisibility(View.GONE);}}public static void showView(ViewGroup view, int startOffset) {RotateAnimation ra = new RotateAnimation(180, 360, view.getWidth() / 2,view.getHeight());// 设置动画的播放时间ra.setDuration(500);ra.setStartOffset(startOffset);ra.setFillAfter(true);view.startAnimation(ra);//得到孩子的总数int childCount = view.getChildCount();//遍历所有的孩子,把每个孩子设置为可用点击for(int i=0;i<childCount;i++){View childView = view.getChildAt(i);childView.setEnabled(true);//childView.setVisibility(View.GONE);}}}

走马观花之外,这才是深入体验,探索自我的最佳时间,

系统控件组合式(案例一)

相关文章:

你感兴趣的文章:

标签云: