学习卫星菜单

学会坚持的自己写的底部中间菜单

转自http://www.cnblogs.com/persist-confident/p/4487386.html

看了hyman老师的视频,听起来有点迷糊,所以就想把实现卫星菜单的实现总结一下。长话短说,下面总结一下:

一、自定义ViewGroup
1)、自定义属性文件

属性的定义:

<attr name="position">
<enum name="left_top" value="0"/>
<enum name="left_bottom" value="1"/>
<enum name="right_top" value="2"/>
<enum name="right_bottom" value="3"/>
<enum name="center_bottom" value="4"/>
</attr>
<attr name="radius" format="dimension"/>

这里需要注意的是:如何将属性文件和自定义的ViewGroup联系起来

=====================================================

其仍然有问题

主要是其子菜单没有完全摆放正确

======-------------------------以下是他写的(确实有可取地方)-- ------------------===========

4)关于自定义控件的布局

这里我主要着重讲一下主菜单在下面中间位置的布局:

首先获得主菜单的长度宽度:

int width = mCButton.getMeasuredWidth();
int height = mCButton.getMeasuredHeight();

要想主菜单放到屏幕的中间位置:

则他的x坐标为l = getMeasuredWidth() / 2 - width / 2;

y坐标为:t = getMeasuredHeight() - height;

最后布局

mCButton.layout(l, t, l + width, t + height);

子菜单的布局位置

t1 = (int) (mRadius * Math.sin(Math.PI / count * (i + 1)));
l1= (int) (mRadius * Math.cos(Math.PI / count * (i + 1)));

最终子菜单的坐标

l = getMeasuredWidth() / 2 - width / 2 - l1;
t = getMeasuredHeight() - height - t2;

子菜单布局

child.layout(l, t, l + width, t + height);

通过ArcMenu将其联系起来,而ArcMenu就是我们自定义的ViewGroup

<declare-styleable name="ArcMenu">
<attr name="position"/>
<attr name="radius"/>
</declare-styleable>

=====================------这是他的结果-------===============

最终效果图如下:

=====================------这是我的结果-------===============

------------------------------------------------------------------------------------------------

仍然需要改进, 望有知道原因大神指教!

时间: 2024-10-06 02:51:29

学习卫星菜单的相关文章

Android之卫星菜单的实现

卫星菜单是现在一个非常受欢迎的“控件”,很多Android程序员都趋之若鹜,预览如下图.传统的卫星菜单是用Animation实现的,需要大量的代码,而且算法极多,一不小心就要通宵Debug.本帖贴出用属性动画Animator来实现卫星菜单. 一.浅析属性动画Animator Animator是Android3.0发布的新功能,代码简单,效果丰富.属性动画,顾名思义,只要是可以GET和SET的属性,我们都可以用属性动画进行处理.属性动画中常用的属性和方法如下: ValueAnimator //数值

自定义旋转卫星菜单

经常在应用中看到卫星菜单,自己也学着写了一个继承自ViewGroup的CustomMenu的卫星菜单,不同之处是带了旋转,由于使用了属性动画,所以只支持3.0以上,还有就是界面变的难看了,囧~,上图(gif录制不流畅,见谅啊): 1. 自定义属性: 为了偷懒,只定义两了两个属性,分别表示子菜单的大小和中心那个显示和隐藏按钮的大小. <declare-styleable name="CustomMenu"> <attr name="itemSize"

Android学习之菜单

android中包含多种菜单,本例带来的是选项菜单和上下文菜单. 1.选项菜单 在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可. 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id="@+id/action_add" 5 android:title="添加" 6 an

Android 实现卫星菜单

步骤:一:自定义ViewGroup 1.自定义属性 a.attr.xml b.在布局文件中使用activity_main.xml c.在自定义控件中进行读取 2.onMeasure 3.onLayout 4.设置主按钮的旋转动画 为menuItem添加平移动画和旋转动画 实现menuItem的点击事件 MainActivity.java public class MainActivity extends AppCompatActivity { private ListView listView;

浅谈属性动画简单使用之实现卫星菜单(二)

大家对于卫星菜单应该都不陌生了,其实这个菜单如果能合适运用到我们的APP项目中,确实是一个不错的选择,交互性非常好.在写Demo之前我也上网搜了一些关于卫星菜单的实现,感觉好多人实现卫星菜单这种动画,采用的是补间动画,并且代码还不少,通过上一讲我们知道,补间动画不具备与用户交互的特点,就比如卫星菜单展开后,产生很多子菜单有很多的点击事件,会发现产生点击事件的位置不会随着补间动画而产生位置改变而改变,反而点击事件一直保存在初始的位置.当然补间动画也能做,那就需要产生动画后发生位置的改变,并且也需要

bootstrap基础学习【菜单、按钮、导航】(四)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>bootstrap基础学习[菜单.按钮.导航](四)</title> <link rel="stylesheet" href="css/bootstrap.min.css" /> <script src="http://libs.

Matlab学习-----------GUIDE菜单学习

打开GUIDE,添加组件,然后点击菜单编辑按钮: 编辑菜单和子菜单,包含快捷键,label和tag,然后点击View编辑菜单的回调函数: 为按钮添加回调函数,程序如下: function varargout = guide_menu(varargin) % GUIDE_MENU MATLAB code for guide_menu.fig % GUIDE_MENU, by itself, creates a new GUIDE_MENU or raises the existing % sing

属性动画实现卫星菜单效果

原来学过用自定义控件以及视图动画来达到这个效果.后来根据慕课网的视频,接触到了属性动画,发现其精髓之处不是一点两点. 相信大家都知道,当我们在使用视图(View)动画的时候,改变轨迹时,所触发的点击事件却没有相对应的随之轨迹而改变.确切的说,Animation改变显示的位置,不可以实现交互的效果,只是实现了显示效果. 先看下Animator的介绍 This is the superclass for classes which provide basic support for animatio

卫星菜单

卫星菜单 下载地址:http://www.devstore.cn/code/info/910.html 运行截图: