Android 如何在com.nightonke:boommenu库中的每个子菜单项上添加click Listener?
我在菜单上看到了很多讨论。但我没有看到任何关于每次单击以下菜单项时事件处理的功能,在这些菜单项中,单击BoomMenuButton后会显示这些功能。Android 如何在com.nightonke:boommenu库中的每个子菜单项上添加click Listener?,android,Android,我在菜单上看到了很多讨论。但我没有看到任何关于每次单击以下菜单项时事件处理的功能,在这些菜单项中,单击BoomMenuButton后会显示这些功能。 我一直在阅读所有的解决方案,但没有一个能帮助我。这是我的代码 活动\u mail.xml <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool
我一直在阅读所有的解决方案,但没有一个能帮助我。这是我的代码
活动\u mail.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_simple_circle_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<com.nightonke.boommenu.BoomMenuButton
android:id="@+id/bmb3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:bmb_normalColor="@android:color/holo_blue_dark"
app:bmb_highlightedColor="@android:color/holo_blue_bright"
app:bmb_buttonEnum="textOutsideCircle"
app:bmb_piecePlaceEnum="piecePlace_share"
app:bmb_buttonPlaceEnum="buttonPlace_custom">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/middle_big_button_trans"
android:layout_gravity="center" />
</com.nightonke.boommenu.BoomMenuButton>
</LinearLayout>
活动类为
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private BoomMenuButton boomMenuButton;
public MainActivity() {
Log.d(TAG,"Inside MainActivity's default Constructor");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"Setting the layout before it's in inflates");
setContentView(R.layout.activity_main);
Log.d(TAG,"Before initializing Bmb3");
initializeBmb3();
Log.d(TAG,"After initializing Bmb3");
}
private void initializeBmb3() {
Log.d(TAG,"Inside initializeBmb3()");
BoomMenuButton bmb = (BoomMenuButton) findViewById(R.id.bmb3);
for (int i = 0; i < 3; i++) {
Log.d(TAG,"Inside for loop -> Before adding builder");
bmb.addBuilder(BuilderManager.getTextOutsideCircleButtonBuilderWithDifferentPieceColor());
Log.d(TAG,"Inside for loop -> After adding builder");
}
float w = Util.dp2px(80);
float h = Util.dp2px(96);
float h_0_5 = h / 2;
float h_1_5 = h * 1.5f;
float hm = bmb.getButtonHorizontalMargin();
float vm = bmb.getButtonVerticalMargin();
float vm_0_5 = vm / 2;
float vm_1_5 = vm * 1.5f;
bmb.getCustomButtonPlacePositions().add(new PointF(-w - hm, +h_0_5 + vm_0_5));
bmb.getCustomButtonPlacePositions().add(new PointF(+w + hm, +h_0_5 + vm_0_5));
bmb.getCustomButtonPlacePositions().add(new PointF( 0, +h_1_5 + vm_1_5));
for (int i = 0; i < bmb.getPiecePlaceEnum().pieceNumber(); i++) {
bmb.getBuilder(i)
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
// When the boom-button corresponding this builder is clicked.
Toast.makeText(MainActivity.this, "Clicked " + index, Toast.LENGTH_SHORT).show();
}
});
}
Log.d(TAG,"At the end of initializeBmb3");
}
public类MainActivity扩展了AppCompatActivity{
公共静态最终字符串TAG=“MainActivity”;
私人按钮;
公共活动(){
d(标记,“在MainActivity的默认构造函数中”);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.d(标签“在充气前设置布局”);
setContentView(R.layout.activity_main);
Log.d(标记“在初始化Bmb3之前”);
初始化ebmb3();
Log.d(标记“初始化Bmb3后”);
}
私有无效初始值ebmb3(){
Log.d(标记“内部初始化ebmb3()”);
BoomMenuButton bmb=(BoomMenuButton)findViewById(R.id.bmb3);
对于(int i=0;i<3;i++){
Log.d(标记“内部for循环->添加生成器之前”);
bmb.addBuilder(BuilderManager.GetTexOutSideCircleButtonBuilder,具有不同的IECColor());
Log.d(标记“内部for循环->添加生成器后”);
}
float w=Util.dp2px(80);
浮点h=Util.dp2px(96);
浮点数h_0_5=h/2;
浮点数h_1_5=h*1.5f;
float hm=bmb.getButtonHorizontalMargin();
float vm=bmb.getButtonVerticalMargin();
浮动vm_0_5=vm/2;
浮点数vm_1_5=vm*1.5f;
bmb.getCustomButtonPlacePositions().add(新的点f(-w-hm,+h_0_5+vm_0_5));
bmb.getCustomButtonPlacePositions().add(新的点F(+w+hm,+h_0_5+vm_0_5));
bmb.getCustomButtonPlacePositions().add(新的点F(0,+h_1_5+vm_1_5));
对于(int i=0;i
}
如何在boom中显示的每个项目上添加单击功能?请查看文档 文件摘录: BMB侦听器 如果要管理方法中的所有单击事件,可以使用 OnBoomListener/OnBoomListenerAdapter:
请看一下文档 文件摘录: BMB侦听器 如果要管理方法中的所有单击事件,可以使用 OnBoomListener/OnBoomListenerAdapter:
在for循环中构建菜单时,我所做的是:
for (int i = 0; i < HamBmb.getPiecePlaceEnum().pieceNumber(); i++) {
HamButton.Builder builder = new HamButton.Builder().rotateImage(true);
switch (i) {
case 0:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 1")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
case 1:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 2")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
case 2:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 3")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
default:
}
HamBmb.addBuilder(builder);
}
for(int i=0;i
我有另一种方法,在我的例子中,它打开另一个活动:
private void HandleBoomMenuClick(int index) {
if (index < HamBmb.getPiecePlaceEnum().pieceNumber()) {
Intent intent;
switch (index) {
case 0:
intent = new Intent(this, YOURACTIVITY0.class);
startActivity(intent);
break;
case 1:
intent = new Intent(this, YOURACTIVITY1.class);
startActivity(intent);
break;
case 2:
intent = new Intent(this, YOURACTIVITY2.class);
startActivity(intent);
break;
default:
}
}
}
private void HandleBoomMenuClick(int索引){
如果(索引
很抱歉这么晚才来到游戏中…在for循环中建立菜单时,我所做的是:
for (int i = 0; i < HamBmb.getPiecePlaceEnum().pieceNumber(); i++) {
HamButton.Builder builder = new HamButton.Builder().rotateImage(true);
switch (i) {
case 0:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 1")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
case 1:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 2")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
case 2:
builder.normalImageRes(R.drawable.ic_launcher_foreground)
.normalText("Menu 3")
.listener(new OnBMClickListener() {
@Override
public void onBoomButtonClick(int index) {
HandleBoomMenuClick(index);
}
});
break;
default:
}
HamBmb.addBuilder(builder);
}
for(int i=0;i