CircularMenu - 可高度自定義的環形菜單Android控件

JackieBurns 8年前發布 | 15K 次閱讀 Android開發 移動開發

可高度自定義的環形菜單Android控件,能夠自定義中心view,通過adapter控制itemview,menu數量,中心圓大小,中心圓環大小。

運行效果:

使用說明:

MainActivity

package sunger.net.org;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import org.sunger.net.view.CircularMenu;

import sunger.net.org.a.R;

public class MainActivity extends AppCompatActivity {
    private CircularMenu wheelMenuView;
    private EditText editText1, editText2, editText3, editText4, editText5, editText6;
    private Button button;
    private PanAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wheelMenuView = (CircularMenu) findViewById(R.id.panview);
        //  wheelMenuView = new WheelMenuView(this);
//        setContentView(wheelMenuView);
//        wheelMenuView.setLineWidth(20);
//        wheelMenuView.setItemCount(6);
//        wheelMenuView.setBackgroundColor(Color.BLACK);
//        wheelMenuView.setPressedColor(Color.BLUE);
//        wheelMenuView.setRadius(300);
//        wheelMenuView.setInnerRadius(120);
//        wheelMenuView.setItemColor(Color.CYAN);
//        wheelMenuView.setCenterView(R.layout.center_layout);
//        wheelMenuView.setRadiusLineWidth(20);
//        wheelMenuView.setStartAngle(5);
        adapter = new PanAdapter();
        wheelMenuView.setAdapter(adapter);
        editText1 = (EditText) findViewById(R.id.editText1);
        editText2 = (EditText) findViewById(R.id.editText2);
        editText3 = (EditText) findViewById(R.id.editText3);
        editText4 = (EditText) findViewById(R.id.editText4);
        editText5 = (EditText) findViewById(R.id.editText5);
        editText6 = (EditText) findViewById(R.id.editText6);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //大圓半徑
                float radius = Float.valueOf(editText1.getText().toString());
                float innerRadius = Float.valueOf(editText2.getText().toString());
                //線條寬度
                float lineWidth = Float.valueOf(editText3.getText().toString());
                //內圓線寬度
                float radiusLineWidth = Float.valueOf(editText4.getText().toString());
                int itemCount = Integer.valueOf(editText5.getText().toString());
                int startAngle = Integer.valueOf(editText6.getText().toString());
                wheelMenuView.setInnerRadius(innerRadius);
                wheelMenuView.setLineWidth(lineWidth);
                wheelMenuView.setItemCount(itemCount);
                wheelMenuView.setStartAngle(startAngle);
                wheelMenuView.setRadiusLineWidth(radiusLineWidth);
                wheelMenuView.setRadius(radius);
            }
        });

    }
}

PanAdapter

package sunger.net.org;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import sunger.net.org.a.R;

/**
 * Created by sunger on 16/1/26.
 */
public class PanAdapter extends BaseAdapter {
    @Override
    public int getCount() {
        return 6;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        TextView textView = (TextView) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, null,false);
        textView.setText("Item" + position);
        return textView;
    }
}


項目地址: https://github.com/sungerk/CircularMenu

 本文由用戶 JackieBurns 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!