Wednesday 29 January 2020

Android Animation Ham Button

Ham Button in Android

Ham is also called as Boom Button, its nothing but animated buttons in Android like showed in following view.


Step 1: Setup Gradle & Maven
                                                   Download : Code

implementation 'com.nightonke:boommenu:1.0.9'
Step 2: Setup Layout 

<com.nightonke.boommenu.BoomMenuButton
    android:id="@+id/boom"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_margin="20dp"
    android:checkableBehavior="single"
    app:boom_button_color="@color/colorPrimary"
    app:boom_button_pressed_color="@color/colorPrimary"
    app:boom_inActionBar="false" />
Step 3: Write Java Code (MainActivity.java)

public class MainActivity extends AppCompatActivity {

  private boolean init = false;
  private BoomMenuButton boomMenuButton;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      boomMenuButton = findViewById(R.id.boom);

  }

  @Override
  public void onWindowFocusChanged(boolean hasFocus) {
      super.onWindowFocusChanged(hasFocus);

      // Use a param to record whether the boom button has been initialized
      // Because we don't need to init it again when onResume()
      if (init) return;
      init = true;

      Drawable[] subButtonDrawables = new Drawable[3];
      int[] drawablesResource = new int[]{
              R.drawable.search,
              R.drawable.refresh,
              R.drawable.settings
      };
      for (int i = 0; i < 3; i++)
          subButtonDrawables[i] = ContextCompat.getDrawable(this, drawablesResource[i]);

      int[][] subButtonColors = new int[3][2];
      for (int i = 0; i < 3; i++) {
          subButtonColors[i][1] = ContextCompat.getColor(this, R.color.textcolor);
          subButtonColors[i][0] = Util.getInstance().getPressedColor(subButtonColors[i][1]);
      }

      // Now with Builder, you can init BMB more convenient
      new BoomMenuButton.Builder()
              .addSubButton(ContextCompat.getDrawable(this, R.drawable.search), subButtonColors[0], "Search")
              .addSubButton(ContextCompat.getDrawable(this, R.drawable.refresh), subButtonColors[0], "Refresh")
              .addSubButton(ContextCompat.getDrawable(this, R.drawable.settings), subButtonColors[0], "Setting")
              .button(ButtonType.HAM)
              .boom(BoomType.PARABOLA)
              .place(PlaceType.HAM_3_1)
              .subButtonTextColor(ContextCompat.getColor(this, R.color.colorPrimaryDark))
              .subButtonsShadow(Util.getInstance().dp2px(2), Util.getInstance().dp2px(2))
              .onSubButtonClick(new BoomMenuButton.OnSubButtonClickListener() {
                  @Override
                  public void onClick(int buttonIndex) {
                      switch (buttonIndex) {
                          default:
                              Toast.makeText(getApplicationContext(), "Ham Button Clicked", Toast.LENGTH_SHORT).show();
                              break;
                      }
                  }
              })
              .init(boomMenuButton);
  }
} 

Step 4: Compile and Run.

Download full code.

No comments:

Donate