onTouchEvent如何获取手指下的电流视图

use*_*412 4 android

这是我的代码

public class Main extends Activity {  

    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);   
        LinearLayout rLinear=new LinearLayout(this);  
        rLinear.setId(200);  

        for (int c=0;c<5;c++)  
        {  
            ImageView imEdit = new ImageView(this);  
            imEdit.setId(300+c);  
            imEdit.setImageResource(R.drawable.a);  
            imEdit.setLayoutParams(new LayoutParams(36, 36));  

            rLinear.addView(imEdit);
        }
    }  
}  
Run Code Online (Sandbox Code Playgroud)

好吧,我有这个代码,我在运行时添加5个ImageView到线性布局,到目前为止一直很好,但我想做的是,当用户将手指滑过其中一个时,我想改变图像,所以我的问题是,我怎么知道用户手指下的当前图像视图是什么.

谢谢.

Pav*_*eev 8

这就是我用来在finger下找到第一个非ViewGroup视图的方法.它是递归的并使用getGlobalVisibleRect

private View findViewAtPosition(View parent, int x, int y) {
    if (parent instanceof ViewGroup) {
        ViewGroup viewGroup = (ViewGroup)parent;
        for (int i=0; i<viewGroup.getChildCount(); i++) {
            View child = viewGroup.getChildAt(i);
            View viewAtPosition = findViewAtPosition(child, x, y);
            if (viewAtPosition != null) {
                return viewAtPosition;
            }
        }
        return null;
    } else {
        Rect rect = new Rect();
        parent.getGlobalVisibleRect(rect);
        if (rect.contains(x, y)) {
            return parent;
        } else {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

public boolean onTouchEvent(MotionEvent ev) {
    Log.i(TAG, "View under finger: " + findViewAtPosition(getRootView(), (int)ev.getRawX(), (int)ev.getRawY()));
}
Run Code Online (Sandbox Code Playgroud)