Java 一次读取动作\u触摸式移动侦听器
我想让它和听者在字母上形成一个单词。但当涉及到一封信时,它会反复写那封信。我怎样才能一次就搞定 因此,如果“harf1”被写成单词的字母,它就不会再被写了 代码如下:Java 一次读取动作\u触摸式移动侦听器,java,android,ontouchlistener,Java,Android,Ontouchlistener,我想让它和听者在字母上形成一个单词。但当涉及到一封信时,它会反复写那封信。我怎样才能一次就搞定 因此,如果“harf1”被写成单词的字母,它就不会再被写了 代码如下: linearLayout.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { s
linearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()){
case MotionEvent.ACTION_DOWN:
if (isDownWord1(event.getX(),event.getY()))
yazi.setText("A");
if (isDownWord2(event.getX(),event.getY()))
yazi.setText("B");
if (isDownWord3(event.getX(),event.getY()))
yazi.setText("C");
if (isDownWord4(event.getX(),event.getY()))
yazi.setText("D");
break;
case MotionEvent.ACTION_MOVE:
if (isDownWord1(event.getX(),event.getY()))
yazi.setText(yazi.getText().toString() + "A");
if (isDownWord2(event.getX(),event.getY()))
yazi.setText(yazi.getText().toString() + "B");
if (isDownWord3(event.getX(),event.getY()))
yazi.setText(yazi.getText().toString() + "C");
if (isDownWord4(event.getX(),event.getY()))
yazi.setText(yazi.getText().toString() + "D");
break;
case MotionEvent.ACTION_UP:
yazi.setText("");
break;
}
return true;
}
});
}
public boolean isDownWord1(float x,float y){
if(x < harf1.getRight() && x > harf1.getLeft() && y > harf1.getTop() && y < harf1.getBottom())
return true;
else
return false;
}
public boolean isDownWord2(float x,float y){
if(x < harf2.getRight() && x > harf2.getLeft() && y > harf2.getTop() && y < harf2.getBottom())
return true;
else
return false;
}
public boolean isDownWord3(float x,float y){
if(x < harf3.getRight() && x > harf3.getLeft() && y > harf3.getTop() && y < harf3.getBottom())
return true;
else
return false;
}
public boolean isDownWord4(float x,float y){
if(x < harf4.getRight() && x > harf4.getLeft() && y > harf4.getTop() && y < harf4.getBottom())
return true;
else
return false;
}
linearLayout.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:
if(isDownWord1(event.getX(),event.getY())
亚齐.塞特特特公司(“A”);
if(isDownWord2(event.getX(),event.getY())
亚齐.塞特特特公司(“B”);
if(isDownWord3(event.getX(),event.getY())
亚齐.塞特克斯(“C”);
if(isDownWord4(event.getX(),event.getY())
亚齐.塞特克斯(D);
打破
case MotionEvent.ACTION\u移动:
if(isDownWord1(event.getX(),event.getY())
yazi.setText(yazi.getText().toString()+“A”);
if(isDownWord2(event.getX(),event.getY())
yazi.setText(yazi.getText().toString()+“B”);
if(isDownWord3(event.getX(),event.getY())
setText(yazi.getText().toString()+“C”);
if(isDownWord4(event.getX(),event.getY())
yazi.setText(yazi.getText().toString()+“D”);
打破
case MotionEvent.ACTION\u UP:
yazi.setText(“”);
打破
}
返回true;
}
});
}
公共布尔值isDownWord1(浮点x,浮点y){
如果(xharf1.getLeft()&&y>harf1.getTop()&&yharf2.getLeft()&&y>harf2.getTop()&&yharf3.getLeft()&&y>harf3.getTop()&&yharf4.getLeft()&&y>harf4.getTop()&&y
这是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/game_screen_bg"
tools:context=".GameLevel1">
<TextView
android:id="@+id/harf1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="93dp"
android:layout_marginLeft="93dp"
android:layout_marginTop="475dp"
android:text="A"
android:textSize="50dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/harf2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="408dp"
android:layout_marginEnd="63dp"
android:layout_marginRight="63dp"
android:text="B"
android:textSize="50dp"
app:layout_constraintEnd_toStartOf="@+id/harf3"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/harf3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="471dp"
android:layout_marginEnd="95dp"
android:layout_marginRight="95dp"
android:text="C"
android:textSize="50dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/harf4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="188dp"
android:layout_marginRight="188dp"
android:layout_marginBottom="114dp"
android:text="D"
android:textSize="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/yazi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="108dp"
android:layout_marginLeft="108dp"
android:layout_marginTop="200dp"
android:text="TextView"
android:textSize="50dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/xxxx"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#10000000"
android:orientation="horizontal" />
</androidx.constraintlayout.widget.ConstraintLayout>
在将字符添加到
yazi
TextView
之前,您只需检查yazi
的最后一个字符是否与新字符不同;因此,将运动事件的开关盒更改为:
case MotionEvent.ACTION_MOVE:
String text = yazi.getText().toString();
String lastChar = text.substring(text.length() - 1);
if (isDownWord1(event.getX(), event.getY()) && !lastChar.equals("A"))
yazi.setText(yazi.getText().toString() + "A");
if (isDownWord2(event.getX(), event.getY()) && !lastChar.equals("B"))
yazi.setText(yazi.getText().toString() + "B");
if (isDownWord3(event.getX(), event.getY()) && !lastChar.equals("C"))
yazi.setText(yazi.getText().toString() + "C");
if (isDownWord4(event.getX(), event.getY()) && !lastChar.equals("D"))
yazi.setText(yazi.getText().toString() + "D");
break;