Я немного новичок в программировании Android и столкнулся с реальной проблемой. У меня есть макет с несколькими кнопками, и я пытаюсь изменить цвет текста кнопок, перемещая их по кнопкам, и после того, как я отпущу палец, я хочу вернуться к текущему цвету для всех нажатых кнопок.
Я пытался включить сенсорный приемник для каждой кнопки, но понял, что я совершенно не прав. Так что я думаю, что мне следует применить некоторый слушатель к макету, но я не уверен, что слушатель касания поможет мне в некотором роде, потому что событие касания намного больше похоже на событие щелчка, и я думаю, что я пытаюсь сделать это очень больше движение. После того, как я «погуглил» и попробовал кое-что, я немного ошеломлен, и я думаю, что то, что я пытаюсь сделать, это не так, как сейчас, это макет. Мне интересно, есть ли какой-нибудь способ определить, скользит ли палец по некоторым кнопкам?
Мой макет:
<RelativeLayout
android:id="@+id/main_layout_braille"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<Button
android:id="@+id/btn_1"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="1"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
/>
<Button
android:id="@+id/btn_2"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="2"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
android:layout_below="@+id/btn_1"
/>
<Button
android:id="@+id/btn_3"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="3"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
android:layout_below="@+id/btn_2"
/>
<Button
android:id="@+id/btn_4"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="4"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
android:layout_alignParentRight="true"
/>
<Button
android:id="@+id/btn_5"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="5"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
android:layout_alignParentRight="true"
android:layout_below="@id/btn_4"
/>
<Button
android:id="@+id/btn_6"
android:layout_width="110dp"
android:layout_height="110dp"
android:background="@drawable/round_shape"
android:text="6"
android:textSize="40sp"
android:textColor="#f8fdf9"
android:tag="x"
android:layout_margin="30sp"
android:layout_alignParentRight="true"
android:layout_below="@id/btn_5"
/>
</RelativeLayout>
И код для прикосновения к одной кнопке за раз:
btn_1.setOnTouchListener(mOnTouchListener);
btn_2.setOnTouchListener(mOnTouchListener);
btn_3.setOnTouchListener(mOnTouchListener);
btn_4.setOnTouchListener(mOnTouchListener);
btn_5.setOnTouchListener(mOnTouchListener);
btn_6.setOnTouchListener(mOnTouchListener);
OnTouchListener mOnTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event)
{
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
// PRESSED
actionDown(v.getId());
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
actionUp(v.getId());
return true; // if you want to handle the touch event
case MotionEvent.ACTION_MOVE:
actionHoverEnter(v.getId());
}
return false;
}
private void actionHoverEnter(int id)
{
switch (id)
{
case R.id.btn_1:
btn_1.setTextColor(Color.RED);
break;
case R.id.btn_2:
btn_2.setTextColor(Color.RED);
break;
case R.id.btn_3:
btn_3.setTextColor(Color.RED);
break;
case R.id.btn_4:
btn_4.setTextColor(Color.RED);
break;
case R.id.btn_5:
btn_5.setTextColor(Color.RED);
break;
case R.id.btn_6:
btn_6.setTextColor(Color.RED);
break;
}
}
private void actionUp(int id)
{
switch (id)
{
case R.id.btn_1:
btn_1.setTextColor(Color.WHITE);
break;
case R.id.btn_2:
btn_2.setTextColor(Color.WHITE);
break;
case R.id.btn_3:
btn_3.setTextColor(Color.WHITE);
break;
case R.id.btn_4:
btn_4.setTextColor(Color.WHITE);
break;
case R.id.btn_5:
btn_5.setTextColor(Color.WHITE);
break;
case R.id.btn_6:
btn_6.setTextColor(Color.WHITE);
break;
}
}
private void actionDown(int id)
{
switch (id)
{
case R.id.btn_1:
btn_1.setTextColor(Color.RED);
break;
case R.id.btn_2:
btn_2.setTextColor(Color.RED);
break;
case R.id.btn_3:
btn_3.setTextColor(Color.RED);
break;
case R.id.btn_4:
btn_4.setTextColor(Color.RED);
break;
case R.id.btn_5:
btn_5.setTextColor(Color.RED);
break;
case R.id.btn_6:
btn_6.setTextColor(Color.RED);
break;
}
}