Java android在触摸和移动时获取按钮文本
我有一个4个按钮和文本视图布局,并将通过选择字母创建一个单词来制作一个小游戏 我的问题是如何在一次触摸中获得多个按钮值并移动到按钮上?我尝试了这个代码,但每次触摸只得到一个值,而当移动时,其他按钮没有任何值 布局Java android在触摸和移动时获取按钮文本,java,android,button,ontouchlistener,Java,Android,Button,Ontouchlistener,我有一个4个按钮和文本视图布局,并将通过选择字母创建一个单词来制作一个小游戏 我的问题是如何在一次触摸中获得多个按钮值并移动到按钮上?我尝试了这个代码,但每次触摸只得到一个值,而当移动时,其他按钮没有任何值 布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<TextView
android:id="@+id/txtresult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="102dp"
android:textColor="@android:color/holo_red_dark"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:text="A" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="160dp"
android:text="T" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="90dp"
android:text="C" />
<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginTop="82dp"
android:text="F" />
</RelativeLayout>
结果应该是这样的:
我认为您应该在布局视图上设置一个触摸监听器,尝试获取X和Y,并检测触摸点的X和Y是否在按钮上
看看这是我的主意,试试看
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
if(get_letter(motionEvent.getX(), motionEvent.getY() != "")
result.append(get_letter(motionEvent.getX(), motionEvent.getY());
}
}
private String get_letter(float x, float y) {
if(is_contain(x, y, btn1)) return btn1.getText();
else if(is_contain(x, y, btn2)) return btn2.getText();
else if(is_contain(x, y, btn3)) return btn3.getText();
else if(is_contain(x, y, btn4)) return btn4.getText();
else return "";
}
private boolean is_contain(float x, float y, Button view) {
RectF rect = new RectF();
view.getHitRect(rect);
return rect..contains((int)x, (int)y);
}
你的方法有什么问题?应该这样做,不是吗?如果possible@KrishnaSharma问题当我触摸例如“C”时得到字母C,当移动到另一个字母如“A”时没有得到任何东西我想得到任何字母当我移动到你的代码时,我可以得到底部结果文本视图中的所有字母。我按C texresult值“C”,然后按现在的texresult值“CA”,依此类推。。。请举例说明您的要求。@menasoft:您解决问题了吗?@user1090751通过此问题回答“是”
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
if(get_letter(motionEvent.getX(), motionEvent.getY() != "")
result.append(get_letter(motionEvent.getX(), motionEvent.getY());
}
}
private String get_letter(float x, float y) {
if(is_contain(x, y, btn1)) return btn1.getText();
else if(is_contain(x, y, btn2)) return btn2.getText();
else if(is_contain(x, y, btn3)) return btn3.getText();
else if(is_contain(x, y, btn4)) return btn4.getText();
else return "";
}
private boolean is_contain(float x, float y, Button view) {
RectF rect = new RectF();
view.getHitRect(rect);
return rect..contains((int)x, (int)y);
}