onTouchListener需要很长时间来改变按钮的背景,Android

时间:2017-08-04 01:41:27

标签: android ontouchlistener

在我的应用程序中,按钮的背景应该在用户触摸时更改为另一个按钮,并在手指关闭时返回到原始按钮,我的问题是长时间触摸会使其在触摸时变短一,不!这是我实现的方式:

Button b = (Button) findViewById(R.id.b_bb_e_l);
b.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {
                    b.setBackgroundResource(R.drawable.button_bb_e_l_selec);
                    break;}

                case MotionEvent.ACTION_UP: {
                    b.setBackgroundResource(R.drawable.button_bb_e_l);
                    break;}
            }
            return false;
        }
    });

2 个答案:

答案 0 :(得分:0)

您可以使用drawableshape来实现它。

  1. btn_bg.xml

  2. 中创建res/drawable这样的文件
  3. btn_bg.xml的内容:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" 
              android:drawable="@drawable/button_bb_e_l_selected"/>
        <item android:drawable="@drawable/button_bb_e_l"/>
    </selector>
    
  4. 将背景设置为按钮:

    <Button
            android:background="@drawable/btn_bg"/>
    

答案 1 :(得分:0)

如果您不需要使用onTouch,则可以创建背景设置为可绘制的样式。将drawable创建为使用选择器的xml并设置选择器的不同状态,state_pressed =“true”和state_pressed =“false”并将颜色应用于这些状态。然后在所需的按钮上使用该样式。