可旋转的圆形菜单栏
一个圆形的可旋转的菜单栏。功能:可动态添加菜单view,菜单view随着手势的旋转而旋转,菜单view可点击。
自定义一个RelativeLayout,添加的菜单view被放置在一个圆形轨迹中,随着手势旋转而旋转。
代码:动态添加菜单view
private List<View> list = new ArrayList<>();
public void initView() {
int size = 5;
for (int i=0;i<size;i++){
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.test,null);
TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(i+"");
list.add(view);
}
myView.updateView(list);
}
更新view并把view放在一个圆形轨迹中,通过三角函数公式,计算出x,y的坐标,通过属性动画放置菜单view
public void updateView(List<View> list){
if(list==null||list.size()==0){
return;
}
this.list = list;
int i = 0;
for(View childView : list){
addView(childView);
childView.setTag(i++);
childView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,v.getTag()+"...",Toast.LENGTH_SHORT).show();
}
});
}
requestLayout();
instance.post(new Runnable() {
@Override
public void run() {
animation(instance.list);
}
});
}
public void animation(List<View> views) {
for (int i = 0; i < views.size(); i++) {
int angle = (wAngle / (views.size()+1)) * (i + 1);
if(wAngle == 180){
angle = (wAngle / (views.size()+1)) * (i