博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android UI-底部旋转菜单栏
阅读量:5741 次
发布时间:2019-06-18

本文共 2557 字,大约阅读时间需要 8 分钟。

以前都是说每逢佳节倍思亲,现在的工作状态是每到周末倍亲切,年底真的是加班加的没完没了的,也没时间写博客,也没时间学习,周末闲来无事看到一个比较有意思的旋转菜单,没事自己实战了一下感觉还不错,代码倒是没什么,主要是有两个技术点,一个就是布局文件,第二个就是动画旋转,关于布局文件是仁者见仁智者见智,只能自己研究,动画的话之前写过这方面的文章有兴趣的可以看下本人之前的博客,开始正题吧:

基础布局

先看下要实现的效果吧:

 

下面的主要是三个图片,一个半圆,两个版圆环,最外面的是三级菜单,中间的是二级菜单;

一级菜单布局:

二级菜单布局:

三级菜单布局,这个布局的时候需要注意的是左边的三个图片设置完之后,设置的是对称方向的最底部的一个图片,以此为依据搞定其他两个图标:

实现Demo

主要实现的主要就是两个按钮,一个按钮式最底层的按钮,一个是二级菜单的按钮:

homeView = (ImageView) findViewById(R.id.icon_home);		menuView = (ImageView) findViewById(R.id.icon_menu);		menuFirst = (RelativeLayout) findViewById(R.id.menuFirst);		menuSecond = (RelativeLayout) findViewById(R.id.menuSecond);		menuThird = (RelativeLayout) findViewById(R.id.menuThird);		homeView.setOnClickListener(this);		menuView.setOnClickListener(this);

两个按钮的点击事件:

@Override	public void onClick(View v) {		// TODO Auto-generated method stub		switch (v.getId()) {		case R.id.icon_home:			if (isSecond) {				MyHelper.StartAninationOut(menuSecond,500,200);				if (isThird) {					MyHelper.StartAninationOut(menuThird,500,300);					isThird=false;				} 			}else {				MyHelper.StartAninationIn(menuSecond,500,300);			}			isSecond=!isSecond;			break;		case R.id.icon_menu:			if (isThird) {				MyHelper.StartAninationOut(menuThird,500,200);				isThird=false;			}else {				MyHelper.StartAninationIn(menuThird,500,200);				isThird=true;			}			break;		default:			break;		}	}

 两个按钮都有点击点击事件,封装一个可以主要就是淡入和淡出的效果:

public class MyHelper {	public static void StartAninationIn(RelativeLayout layout,long duratoin,long offset) {		// TODO Auto-generated method stub		RotateAnimation rotateAnimation=new RotateAnimation(180, 360, layout.getWidth()/2, layout.getHeight());        rotateAnimation.setDuration(duratoin);        rotateAnimation.setFillAfter(true);//保持旋转之后的状态        rotateAnimation.setStartOffset(offset);//延迟加载时间        layout.startAnimation(rotateAnimation);	}	public static void StartAninationOut(RelativeLayout layout,long duratoin,long offset) {		// TODO Auto-generated method stub		RotateAnimation rotateAnimation=new RotateAnimation(0, 180, layout.getWidth()/2, layout.getHeight());        rotateAnimation.setDuration(duratoin);        rotateAnimation.setFillAfter(true);        rotateAnimation.setStartOffset(offset);        layout.startAnimation(rotateAnimation);	}}

 最后看下效果图:

 

链接: http://pan.baidu.com/s/1jGh3Qse 密码: wilw

转载于:https://www.cnblogs.com/xiaofeixiang/p/4162283.html

你可能感兴趣的文章
基础知识:python模块的导入
查看>>
Android MVC之我的实现
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
关于批处理-1
查看>>
Tomcat部署Web应用方法总结
查看>>
Python3 django2.0 字段加密 解密 AES
查看>>
CCNA实验之:网络地址转换(NAT)实验
查看>>
计算机网络原理笔记-停止等待协议
查看>>
确定当前记录和下一条记录之间相差的天数
查看>>
sql语句返回主键SCOPE_IDENTITY()
查看>>
机器学习开源项目精选TOP30
查看>>
iOS开发-邮件发送
查看>>
/etc/resolv.conf文件详解
查看>>
【转】VC的MFC中重绘函数的使用总结(整理)
查看>>
JQuery日记_5.13 Sizzle选择器(六)选择器的效率
查看>>
oracle查看经常使用的系统信息
查看>>
Django_4_视图
查看>>
Linux的netstat命令使用
查看>>
lvm讲解,磁盘故障小案例
查看>>