学习卫星菜单
學會堅持的自己寫的底部中間菜單
轉自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>
=====================------這是他的結果-------===============
最終效果圖如下:
=====================------這是我的結果-------===============
?
?
?
------------------------------------------------------------------------------------------------?
仍然需要改進, 望有知道原因大神指教!
?
轉載于:https://www.cnblogs.com/nucdy/p/4732808.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: springJDBC一对多关系,以及Ja
- 下一篇: centos设置开机自启动