zoukankan      html  css  js  c++  java
  • 学习卫星菜单

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

    转自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>

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

    最终效果图如下:

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

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

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

  • 相关阅读:
    深入浅出TCP之listen
    indexing and hashing
    c++四种强制类型转化
    c++实现web服务框架
    MVC、MVP、MVVM概念解析
    常用设计模式
    [React]虚拟DOM
    防抖和节流
    函数柯里化
    apply, bind, call方法剖析
  • 原文地址:https://www.cnblogs.com/nucdy/p/4732808.html
Copyright © 2011-2022 走看看