我基本上试图通过在多个ImageView上滑动来编辑editText的内容。 这是我的代码,但似乎没有任何效果。
package com.example.touchdemo;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Rect;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.view.View.OnTouchListener;
import android.view.MotionEvent;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout relLay = (RelativeLayout) findViewById(R.id.RelativeLayout1);
final TextView txtv = (TextView) findViewById(R.id.textView1);
final ImageView myImageView = (ImageView) findViewById(R.id.imageView1);
final ImageView myImageView2 = (ImageView) findViewById(R.id.imageView2);
myImageView.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
int x,y;
if(event.getAction() == MotionEvent.ACTION_MOVE){
Rect rect = new Rect();
rect.left = myImageView.getLeft();
rect.top = myImageView.getTop();
rect.bottom = myImageView.getBottom();
rect.right = myImageView.getRight();
Rect rect2 = new Rect();
rect2.left = myImageView2.getLeft();
rect2.top = myImageView2.getTop();
rect2.bottom = myImageView2.getBottom();
rect2.right = myImageView2.getRight();
x = (int) event.getRawX();
y = (int) event.getRawX();
if(rect.contains(x, y)) {
txtv.append("Ti ho trovato 1");
}
else if(rect2.contains(x, y)) {
txtv.append("Ti ho trovato 2");
}
}
// txtv.append("ciao");
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
这是我的xml:
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imageView1"
android:layout_marginLeft="86dp"
android:layout_toRightOf="@+id/imageView1"
android:src="@drawable/ic_launcher" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="37dp"
android:layout_marginTop="94dp"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="124dp"
android:text="TextView" />
我认为最好的方法是根据全屏尺寸获取事件坐标,并检查它们是否包含在代表我的imageViews的矩形中。 另外我想知道在我的代码中是否连续调用onTouch事件。 我很感激任何建议。
答案 0 :(得分:0)
您正在检查触控侦听器是否在您的imageview定义的矩形内录制触控。但是,您只是在ACTION_MOVE事件中检查它。您可能希望使用ACTION_DOWN捕获初始触摸,ACTION_DOWN定义在视图上。 ACTION_MOVE是指您已经触摸视图并移动手指