Чтобы увеличить размер кнопки при нажатии в Android

Как сделать так, чтобы размер кнопки немного увеличивался при ее нажатии и уменьшался снова при отпускании? Это для выделения нажатой кнопки, используя размер в дополнение к другому цвету.

С уважением, Кики

3 ответа

Решение

Сделай свой Button поле, и измените его размер в OnTouchListener связано с этим. Используя OnTouchListener вы можете слушать разные MotionEvents, такие как ACTION_DOWN а также ACTION_UP,

Начиная с API 21 (Lollipop) доступно только xml-решение на основе атрибута stateListAnimator. Несмотря на то, что его основная цель - анимировать свойства представления на основе изменений состояния, вы можете отключить анимацию, если это требуется, установив duration="0". Например:

       <!-- res/layout/my_layout.xml -->

<LinearLayout ...
  android:stateListAnimator="@animator/zoom_animator">...</layout>
       <!-- res/animator/zoom_animator -->

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <set>
      <objectAnimator android:propertyName="scaleX" android:valueTo="1.0" android:duration="0" />
      <objectAnimator android:propertyName="scaleY" android:valueTo="1.0" android:duration="0" />
    </set>
  </item>
  <item android:state_pressed="true">
    <set>
      <objectAnimator android:propertyName="scaleX" android:valueTo="1.1" android:duration="0" />
      <objectAnimator android:propertyName="scaleY" android:valueTo="1.1" android:duration="0" />
    </set>
  </item>
</selector>

Также есть два похожих вопроса об анимированном масштабе:

button.setOnTouchListener(новый View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)v.getLayoutParams();

            //Code to convert height and width in dp.
            int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 35, getResources().getDisplayMetrics());
            int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 140, getResources().getDisplayMetrics());

            if(event.getAction() == MotionEvent.ACTION_DOWN){
                layoutParams.width = width + 5;
                layoutParams.height = height + 5;
                SearchButton.setLayoutParams(layoutParams);
            }
            if(event.getAction() == MotionEvent.ACTION_UP){
                layoutParams.width = width;
                layoutParams.height = height;
                SearchButton.setLayoutParams(layoutParams);
            }

            return false;
        }
    });

В вашей деятельности

Private Button myButton;

//...

protected void onCreate(Bundle savedInstanceState) {

//...

myButton = (Button) findViewById(R.id.my_button);
    _button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        myButton.setWidth(50);
        myButton.setHeight(50);
        }
      });
    }
//Try it

Private Button myButton;

//...

protected void onCreate(Bundle savedInstanceState) {

//...

myButton = (Button) findViewById(R.id.my_button);
    _button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        myButton.setWidth(myButton.getWidth()+5);
        myButton.setHeight(myButton.getHeight()+5);
        }
      });
    }
Другие вопросы по тегам