4

ボタンを押すと少し大きくなり、離すと再び小さくなるようにするにはどうすればよいですか?これは、別の色に加えてサイズを使用して、押されたボタンを強調表示するためのものです。

よろしく、キキ

4

5 に答える 5

2

フィールドを作成し、それに関連付けられているButtonサイズを変更します。OnTouchListenerOnTouchListenerを使用すると、やなどのさまざまなリッスンを行うことができMotionEventsます。ACTION_DOWNACTION_UP

于 2010-09-23T12:37:21.883 に答える
1
button.setOnTouchListener(new 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;
    }
});
于 2016-05-19T10:48:01.017 に答える
1

API 21(Lollipop)以降、 stateListAnimator属性に基づいてxmlのみのソリューションを使用できます。状態の変化に基づいてビューのプロパティをアニメーション化することが主な目的ですが、必要に応じてを設定することでアニメーションを無効にすることができます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>

アニメーションスケールについても同様の質問が2つあります。

于 2020-11-19T11:55:14.850 に答える
-1

あなたの活動で

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);
        }
      });
    }
于 2010-09-23T15:59:11.100 に答える
-1
//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);
        }
      });
    }
于 2020-08-31T02:54:36.430 に答える