这是我的代码
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到线性布局,到目前为止一直很好,但我想做的是,当用户将手指滑过其中一个时,我想改变图像,所以我的问题是,我怎么知道用户手指下的当前图像视图是什么.
谢谢.
这就是我用来在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)
| 归档时间: |
|
| 查看次数: |
8553 次 |
| 最近记录: |