我正在努力完成以下事情
假设我有5-6个值为S N A K E的TextViews
现在,我想按S textView,然后在N上滑动手指将其选中,然后移动到E。我想这样做,这样我就可以在我的字符串或字符序列中获得"SNAKE“等
如果有任何想法,请与我分享。我不明白如何在这里使用onTouch。另外,我会动态添加textViews,所以我也会动态设置他们的i
发布于 2012-05-02 00:20:25
我从来没有这样做过,但我有个想法。
假设所有的文本视图都处于某种布局中,您可以禁用文本视图上的可聚焦功能,并在底层容器上创建一个onTouch侦听器。
开始跟踪鼠标按下事件
@Override public boolean onTouch(View v, MotionEvent event) {
if(event.getAction == MotionEvent.ACTION_DOWN)
{
captureInput = true;
}
}*在ACTION_MOVE事件中,检查当前位置是否在文本视图之上,如果是,则捕获该值*
@Override public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN)
{
captureInput = true;
}
else if(action == MotionEvent.ACTION_MOVE
{
//get x/y of your finger
int X = (int)event.getX();
int Y = (int)event.getY();
//Somehow check if the x,y are overlapping with one of your textivews
// If so, add that textview's text to your list
// Below is pseudo code
/* for(TextView curTV: allTextViews)
{
if(isOverlapping(X,Y))
{
listOfSwipedCharacters.add(curTV.getText());
}
}
}
}最后,当用户松开手指时,停止跟踪并对单词列表执行一些操作
@Override public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN)
{
captureInput = true;
}
else if(action == MotionEvent.ACTION_MOVE
{
//get x/y of your finger
int X = (int)event.getX();
int Y = (int)event.getY();
//Somehow check which textview the X,Y coords are overlapping
// Below is pseudo code
/* for(TextView curTV: allTextViews)
{
if(isOverlapping(X,Y))
{
listOfSwipedCharacters += (curTV.getText());
}
}*/
}
else if(action == MotionEvent.ACTION_UP)
{
captureInput = false;
//Do whatever you want with the string of information that you've captured
}}
再说一次,我不知道这是否可行,这只是一种方法的猜测。我怀疑循环遍历每个文本视图以检查重叠的性能将非常糟糕,因此可能有一种比运行for循环更有效的方法。
由于你知道你不能跳过字母时,你可以创建一个简短的列表,列出所有可能的滑动位置(周围的字母),每当你添加一个新的字母。然后在发生鼠标事件时,检查鼠标移动事件是否命中了这些字母中的任何一个。例如,在一个标准的单词搜索游戏中,一旦你选择了一个字母,只有9个其他可能的位置可供你滑动(周围的字母),所以你应该只在捕捉鼠标移动事件时检查这9个位置是否被击中。
编辑:如果你给每个文本视图都附加了一个onTouch监听器,我想你可以使用上面的解决方案。对于触摸,同样的前提也适用:向下=开始捕获,移动=捕获文本,向上=停止捕获。因为触发onTouch事件的textview将是用户正在滑动的那个textview,所以它将使您不必确定悬停在哪个textview上。
https://stackoverflow.com/questions/10400401
复制相似问题