Satellite Menu最好的仿path菜单

介绍:

相信很多人都知道path上那个栩栩如生的菜单效果,网上仿照实现的开源代码我至少看到有5种,不过这个是我所知道的最好的,理由有2:1非常流畅; 2使用接口非常简单,就像使用自带的控件一样。左边的效果图可以忽略,gif上看到的效果不理想。

运行效果:

使用说明:

xml中:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:sat="http://schemas.android.com/apk/res/android.view.ext"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <android.view.ext.SatelliteMenu
        android:id="@+id/menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|left"
        android:layout_margin="8dp"
        sat:satelliteDistance="170dp"
        sat:mainImage="@drawable/ic_launcher"
        sat:totalSpacingDegree="90"
        sat:closeOnClick="true"
        sat:expandDuration="500"/>
</FrameLayout>

在java代码中添加菜单项:

SatelliteMenu menu = (SatelliteMenu) findViewById(R.id.menu);
List<SatelliteMenuItem> items = new ArrayList<SatelliteMenuItem>();
items.add(new SatelliteMenuItem(4, R.drawable.ic_1));
items.add(new SatelliteMenuItem(4, R.drawable.ic_3));
items.add(new SatelliteMenuItem(4, R.drawable.ic_4));
items.add(new SatelliteMenuItem(3, R.drawable.ic_5));
items.add(new SatelliteMenuItem(2, R.drawable.ic_6));
items.add(new SatelliteMenuItem(1, R.drawable.ic_2));

添加菜单被点击的Listener:

menu.setOnItemClickedListener(new SateliteClickedListener() {
  public void eventOccured(int id) {
    Log.i("sat", "Clicked on " + id);
  }
});
已下载
0