我是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;
}
}
答案 0 :(得分:0)
尝试使用selector
更改text_color
。