Как ввести несколько событий в ImageButton? - PullRequest
0 голосов
/ 06 ноября 2018

, так что у меня есть этот код, и он отлично работает, чтобы скользить вверх и вниз по кнопке, но я хочу, чтобы он работал на несколько кнопок, выполнив один щелчок на кнопке image:

Beranda.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_beranda);
    tombolSejarah = findViewById(R.id.tombolsejarah);
}


public void slideUpDown(final View view) {
     if (!isPanelShown()) {
         // Show the panel
         Animation bottomUp = AnimationUtils.loadAnimation(this,
                 R.anim.buttom_up);
         tombolSejarah.startAnimation(bottomUp);
         tombolSejarah.setVisibility(View.VISIBLE);
     }else {
         // Sembunyikan
         Animation bottomDown = AnimationUtils.loadAnimation(this,
                 R.anim.buttom_down);
         tombolSejarah.startAnimation(bottomDown);
         tombolSejarah.setVisibility(View.GONE);
    }
}


private boolean isPanelShown() {
        return tombolSejarah.getVisibility() == View.VISIBLE;
}

Мои изображения: tombolsejarah, tombolkawasan, tombolsuku, tombolkebudayaan, tombolbahasa.

Вопрос в том, как это сделать?

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Это может быть то, что вы ищете:

    public void slideUpDown(final View view) {
        if (!isPanelShown()) {

            Animation bottomUp = AnimationUtils.loadAnimation(this,
                R.anim.buttom_up);
            view.startAnimation(bottomUp);
            view.setVisibility(View.VISIBLE);
        } else {

            Animation bottomDown = AnimationUtils.loadAnimation(this,
                R.anim.buttom_down);
            view.startAnimation(bottomDown);
            view.setVisibility(View.GONE);
        }
    }

Передайте кнопку, по которой вы хотите перейти в эту функцию.

Надеюсь, это поможет.

0 голосов
/ 06 ноября 2018

Один из вариантов - поместить кнопки в макет с одним родителем (RelativeLayout или LinearLayout), который вы анимируете, чтобы сдвигать кнопки вверх или вниз (это если кнопки должны вести себя одинаково на imageButton нажмите). Вы можете назвать родительское представление, например, animator и выполнить операцию, которую вы выполняете в своем коде с этим view.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_beranda);
    tombolSejarah = findViewById(R.id.tombolsejarah);

    //the parent view to handle animations when button is clicked
    animator = findViewById(R.id.animator);

    //Listening for click events
    animator.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            slideUpDown(v)
        }
    }
}


public void slideUpDown(final View view) {
    if (!isPanelShown()) {
        // Show the panel
        Animation bottomUp = AnimationUtils.loadAnimation(this,
             R.anim.buttom_up);
        //tombolSejarah.startAnimation(bottomUp);
        //tombolSejarah.setVisibility(View.VISIBLE);
        //animating view
        animator.startAnimation(bottomUp);
        animator.setVisibility(View.VISIBLE);
    }else {
        // Sembunyikan
        Animation bottomDown = AnimationUtils.loadAnimation(this,
             R.anim.buttom_down);
        //tombolSejarah.startAnimation(bottomDown);
        //tombolSejarah.setVisibility(View.GONE);
        //animating view
        animator.startAnimation(bottomUp);
        animator.setVisibility(View.VISIBLE);
   }
}


private boolean isPanelShown() {
    return tombolSejarah.getVisibility() == View.VISIBLE;
}
0 голосов
/ 06 ноября 2018

Попробуй это. Если вы этого не хотите, мне может понадобиться, чтобы вы разъяснили вашу проблему.

Реализация OnClickListener в вашей деятельности

public class MyActivity extends AppCompact implements OnClickListener{}

В вашем onCreate найдите эти кнопки и установите onClickListener()

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_beranda);
    tombolSejarah = findViewById(R.id.tombolsejarah);
    tombolSejarah.setOnClickListener(this);
    tombolkawasan = findViewById(R.id.tombolkawasan);
    tombolkawasan.setOnClickListener(this);
    tombolsuku = findViewById(R.id.tombolsuku );
    tombolsuku.setOnClickListener(this);
  .....
}

переопределить onClick()

    @Override
    public void onClick(View v) {
        slideUpDown(v);
    }

для вашего slideUpDown (view)

public void slideUpDown(final View view) {//* <<<<watch at this view
    // the point here is, DO show animation on this view
    //not on tombolSejarah button.

 if (!isPanelShown()) {
     // Show the panel
     Animation bottomUp = AnimationUtils.loadAnimation(this,
             R.anim.buttom_up);
     view.startAnimation(bottomUp);
     view.setVisibility(View.VISIBLE);
 }else {
     // Sembunyikan
     Animation bottomDown = AnimationUtils.loadAnimation(this,
             R.anim.buttom_down);
     view.startAnimation(bottomDown);
     view.setVisibility(View.GONE);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...