2014-09-11 3 views
0

Как дела? Я новичок в программировании на Android. до сих пор я запускал одно приложение на своем мобильном телефоне, используя 4.1 API 16. Мой вопрос заключается в том, что при отпускании события клика изображение кнопки в следующем коде должно быть восстановлено до предыдущего состояния.Android Onclick

button.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     x = x + 1; 
     edittext.setText("" + x); 
     button.setBackgroundResource(R.drawable.buttonpressed1); 
    } 
}); 
+0

Можете ли вы поделиться buttonpressed1.xml из вашей вытяжке папки? – VikramV

+0

и что происходит? разве это не работает? Является ли текст установленным в edittext? – Opiatefuchs

ответ

0

Существует полное решение для Вас:

ImageButton guessButton; 

guessButton = (ImageButton) findViewById(R.id.Knorr_Game_Guess_Button); 
     guessButton.setOnTouchListener(new View.OnTouchListener() 
     { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) 
      { 
       if (event.getAction() == MotionEvent.ACTION_DOWN) 
       { 
        v.setBackgroundResource(R.drawable.ic_picture1); 
       } 
       else if (event.getAction() == MotionEvent.ACTION_UP) 
       { 
        v.setBackgroundResource(R.drawable.ic_picture2); 
       } 
       return false; 
      } 
     }); 

Это работает :)

+0

Это действительно работает. Спасибо. –

0

Если вы хотите, чтобы захватить выпуск кнопки, вам нужно использовать OnTouchListener

Вот пример:

yourButton.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction() == MotionEvent.ACTION_DOWN) { 
      //What happens when preessed 
     } else if (event.getAction() == MotionEvent.ACTION_UP) { 
      //What happens when released   } 
    } 
}; 

Надеется, что это помогло!

+0

Спасибо. Это действительно помогло. –

2

Вы также можете использовать доступные состояния касания. пример, показывающий изменение цвета на печати:

в вашей кнопки XML использовать android:background="@drawable/touchstates"

и touchstates.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <stroke android:color="#cc0099CC" android:width="1dip" /> 
      <solid android:color="#660099CC" /> 
     </shape> 
    </item> 
</selector> 
+0

Спасибо. Прислушался прослушиватель Touch, и он сработал. –

1

Для нормальной работы необходимо использовать селектор как свойства фона зрения Button положить все это файлы в папку Drawable selector.xml:

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

bg_pressed.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <stroke 
     android:width="@dimen/circle_padding" 
     android:color="@android:color/transparent" /> 
    <solid android:color="@android:color/white" /> 
</shape> 

bg_unpressed.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 
    <stroke 
     android:width="@dimen/circle_padding" 
     android:color="@android:color/transparent" /> 
    <solid android:color="@android:color/black" /> 
</shape> 

и макет набор фона кнопки android:background="@drawable/selector"

+0

Спасибо. Он работал с прослушивателем Touch. –

0

Вам нужно использовать селектор. Селектор должен быть рисованным файлом, который присваивается фону вашей кнопки. Пример селектора

<?xml version="1.0" encoding="utf-8"?> 

    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

      <!-- focused --> 
     <item 
      android:state_focused="true" 
      android:drawable="@drawable/rounded_button_focused" 
      /> 
     <!--pressed --> 
     <item 
      android:state_pressed="true" 
      android:drawable="@drawable/rounded_button_pressed" 
      /> 


     <item 
      android:drawable="@drawable/rounded_button_unfocused"/> 


    </selector> 

Селектор будет в основном назначать правильный фон в зависимости от состояния вашей кнопки. Если кнопка нажата, она назначит файл «rounded_button_pressed» на фоне кнопки. Rounded_button_pressed еще один вытяжке файл, например:

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 


    <gradient android:startColor="@color/WhiteSmoke" 
     android:endColor="@color/LightGrey" 
     android:angle="270"/> 
    <stroke 
     android:width="2dp" 
     android:color="@color/CornflowerBlue" /> 
    <corners 
     android:radius="4dp" 

     /> 
    <padding 
     android:left="10dp" 
     android:top="10dp" 
     android:right="10dp" 
     android:bottom="10dp" /> 
</shape> 

Надежда решает вашу проблему

+0

Спасибо. Действительно хотел какой-то Java-код. Для этого работал сенсорный прослушиватель. –