gpt4 book ai didi

java - onTouchListener : Convert View to ImageView

转载 作者:行者123 更新时间:2023-11-29 05:38:59 25 4
gpt4 key购买 nike

我的 Activity-Class 中有一个 ImageView 的 ArrayList,它们都应该有相同的行为:只要你触摸它们并将手指向右或向左移动,这个 ImageView 的 x 坐标也应该移动。

public boolean onTouch(View v, MotionEvent e) {
float origin_x = 0;
float origin_x2 = 0;
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();
switch (e.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
origin_x = e.getX();
origin_x2 = lp.leftMargin;
break;
}
case MotionEvent.ACTION_MOVE: {
float diff = e.getX()-origin_x;
System.out.println(diff);

lp.setMargins((int) (origin_x2+diff), lp.topMargin, 0, 0);
v.setLayoutParams(lp);
break;
}
}
return true;
}

但由于我只能在 ontouch 方法中使用“View”对象,所以我无法找出哪个 ImageView 被触摸了。

你知道我应该怎么解决这个问题吗?

最佳答案

好吧,很久以前我就问过这个问题 - 但由于它最近收到了很多点击甚至点赞,所以我决定现在回答它。

如果您想移动一个 View (无论它是一个 ImageView 还是任何其他类型的 View ),您可以使用我的问题帖子中的代码。将 margins 设置为 onTouch MotionEvent 值将在 RelativeLayouts 中起作用。


但是,我的问题还包括如何从 onTouch-Event 的 ArrayList 中找到 View 对象>ImageViews
答案也很简单:

ArrayList<ImageView> arrList = new ArrayList<ImageView>();
/** ... **/
int keyOfView = arrList.indexOf(v);

vView 对象还是ImageView 对象并不重要。对于 ArrayList 查找,无需从 View 转换为 ImageView,因为引用将保持不变 - 这就是列表中实际搜索的内容:引用.


但是,如果您(无论出于何种原因)确实需要来自View 对象的ImageView,并且是不确定是否所有的 Views 实际上都是 ImageView 对象,那么您可以这样做:

if (v instanceof ImageView) {
ImageView i = (ImageView) v;
}

这样你就不会得到cast-errors

关于java - onTouchListener : Convert View to ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com