2014-02-19 2 views
-1

Я поместил этот код на мой onClickListener:Когда нажата кнопка, как сделать фоновое изображение изменится на несколько секунд, прежде чем вернуться назад?

btnListenC.setBackgroundResource(R.drawable.lisbtnpressed); 

Но здесь, как мне сделать так, чтобы Drawable 'lisbtnpressed' изменения обратно в исходное изображение через несколько секунд, пожалуйста?

ответ

2

Вы можете сделать это проще с файлом XML в вашем вытяжке папка (mybutton.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/mydrawable /> 
    <item android:state_focused="true" android:drawable="@drawable/otherdrawable" /> 
    <item android:drawable="@color/redcolor" /> 
</selector> 

и использовать это в коде кнопки XML

android:background:@drawable/mybutton 

Как Вы можете видеть в первой части кода, вы можете иметь различные (рисуем цвет, изображение ...) для каждого состояния кнопки. Состояние кнопок можно найти here или here.

При таком подходе вам не нужно использовать какой-либо код.

+0

Спасибо! Что такое элемент android: drawable = "@ color/redcolor" для? Нужно ли мне указывать какой-то цвет или что-то в этом роде? – Fuchsia

+0

@Fuchsia, который является ресурсом, на который вы ссылаетесь в 'colors.xml'. – Raghunandan

+0

@Fuchsia Drawable может быть изображением или цветом. Этот последний элемент является всего лишь примером, но, как вы видите, он не имеет атрибута «state», что означает, что он доступен по умолчанию. – Merlevede

0

Используйте селектор

android button selector

или использовать OnTouchListener на ACTION_DOWN изменения в lisbtnpressed на ACTION_UP набора по умолчанию

btnListenC.setOnTouchListener(new OnTouchListener() { 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
switch(event.getAction()) 
{ 
    case MotionEvent.ACTION_DOWN : 
        // change 
      btnListenC.setBackgroundResource(R.drawable.lisbtnpressed); 
    break; 
    case MotionEvent.ACTION_UP : 
       // set to original 
      btnListenC.setBackgroundResource(R.drawable.lisbtnoriginal); 
    break; 
    } 
return true; 
    } 
}); 
Смежные вопросы