Вот что я хочу:
- Прикоснитесь к экрану.
- продолжайте двигать пальцем.
- Если коснуться любой кнопки на экране, двигая пальцем, цвет кнопки изменится на зеленый.
Проблема : условие 'if' не работает в 57-й строке (. java)
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE)
, пока оно не изменится на if (motionEvent.getAction() == MotionEvent.ACTION_DOWN)
, что я не Не хочу.
Пожалуйста, посмотрите. java файл ниже:
public class MainActivity extends AppCompatActivity implements View.OnTouchListener , GestureDetector.OnGestureListener{
private Button bt1,bt2,bt3
private GestureDetector mGestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ------ buttons findViewByID
bt1 = (Button) findViewById(R.id.b1);
bt2 = (Button) findViewById(R.id.b2);
bt3 = (Button) findViewById(R.id.b3);
//------Set UP id for buttons
bt1.setId(1);
bt2.setId(2);
bt3.setId(3);
//-------set up touchlisteners for buttons
bt1.setOnTouchListener(this);
bt2.setOnTouchListener(this);
bt3.setOnTouchListener(this);
//
mGestureDetector = new GestureDetector(this,this);
}
//---------Override Event
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
/*----------When finger touched + finger is moving. But the condition below is not working finger moving event (ACTION_MOVE) not working. but finger touch event(ACTION_DOWN) is working*/
if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) // condition doesn't work until it changes //if(motionEvent.getAction() == MotionEvent.ACTION_DOWN).
{
switch (view.getId())
{
case 1:
bt1.setBackgroundColor(GREEN);
break;
case 2:
bt2.setBackgroundColor(GREEN);
break;
case 3:
bt3.setBackgroundColor(GREEN);
break;
}
}
return true;
}
//--------Other Overrides
@Override
public boolean onDown(MotionEvent motionEvent) {
return false;
}
@Override
public void onShowPress(MotionEvent motionEvent) {
}
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return false;
}
@Override
public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
@Override
public void onLongPress(MotionEvent motionEvent) {
}
@Override
public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
return false;
}
}
И, пожалуйста, посмотрите файл. XML ниже
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/lin"
tools:context=".MainActivity">
//------Mode: HORIZONTAL
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
// ------ BUTTONS
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60sp"
android:layout_weight="1"/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60sp"
android:layout_weight="1" />
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="60sp"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>