使用OnTouch侦听器的按钮效果

时间:2015-05-20 15:40:19

标签: android ontouchlistener ontouchevent ontouch

我想在按钮上添加一些动作。我希望它们在您触摸时改变颜色,并在您向上移动手指时返回原始颜色。但是出了点问题,我无法找到答案。

btn1.setOnTouchListener(new View.OnTouchListener(){

    @Override
    public boolean OnTouch(View v,MotionEvent mevent){
        switch(mevent.getAction()){
            case MotionEvent.ACTION_UP:{
                Toast.makeText(getApplicationContext(),"merhaba",Toast.LENGTH_LONG).show();
                Button view=(Button) v;
                view.getBackground().clearColorFilter();
                view.invalidate();

                break;  }
            case MotionEvent.ACTION_DOWN:{Button view=(Button) v;
                    view.getBackground().setColorFilter(0x77000000,PorterDuff.Mode.SRC_ATOP);
                    view.invalidate();
                break;

            }

                case MotionEvent.ACTION_CANCEL:{
                        Button view=(Button) v;
                        view.getBackground().clearColorFilter();
                        view.invalidate();
                        break;
            }       }
            return true;}
});

有什么问题?

1 个答案:

答案 0 :(得分:1)

您可以在drawable xml文件上编写按钮单击效果。示例 button_selector.xml

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/background_image" android:state_pressed="true" />
    <item android:drawable="@drawable/background_image" android:state_focused="true" />
</selector>

将此可绘制文件作为按钮的背景。例子

 <Button           
       android:layout_width="wrap_content"
       android:layout_height="50dp"
       android:textSize="14sp"
       android:background="@drawable/button_selector"
       android:text="Delete"
       android:textStyle="bold"/>

当您点击按钮或专注于按钮时,背景将会改变。