我有一个自定义视图,它会对触摸事件作出反应:它会在我的Vector“currenMonsters”中搜索触摸位置,以识别“怪物”。 在自定义视图中我将绘制怪物。
当前Vector和带有怪物位图的hasmap(hashmapMonsterStandartBitmap)不在自定义视图中。他们参与了自定义视图的活动。
如何将触摸事件信息发送给活动? (我想通过接口回调?)
如何从自定义视图中访问存储在活动中的“currentMonster”向量?
目前我已经在视图中存储了currentMonster向量和hashmap以及其他一些逻辑 - 我想把它们放在活动中。
这里有一些代码示例(在costom视图中,短路):
@Override
public boolean onTouchEvent(MotionEvent event) {
// get pointer index from the event object
int pointerIndex = event.getActionIndex();
// get pointer ID
int pointerId = event.getPointerId(pointerIndex);
Log.i("touch","event.getPointerID(): "+pointerId);
// get masked (not specific to a pointer) action
int maskedAction = event.getActionMasked();
switch (maskedAction) {
//Detection of a finger touch
case MotionEvent.ACTION_DOWN:
totalClickt = totalClickt+1;
fingerpointer = new PointF();
fingerpointer.x = event.getX(0);
fingerpointer.y = event.getY(0);
for (int i=currentMonsters.size()-1; i >= 0; i--){
if(currentMonsters.elementAt(i).getDimension().contains((int)fingerpointer.x, (int)fingerpointer.y)){
Log.i("MonsterTouchted","MonsterTouched: index: "+i);
attackMonster(currentMonsters.elementAt(i).getID());
}
}
invalidate();
return true;
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// draw mosnters
for(int i=0; i < currentMonsters.size();i++){
if( currentMonsters.elementAt(i) != null){
canvas.drawBitmap(hashmapMonsterStandartBitmap.get(currentMonsters.elementAt(i).getImagePath()),
currentMonsters.elementAt(i).getDimension().getX(),
currentMonsters.elementAt(i).getDimension().getY(),
mPaint); //bitmap, space left, space top, paint
} else{
Log.i("Failure","Draw monster nullpointer at index: "+i);
}
}
}
提前致谢 - Ghal
答案 0 :(得分:1)
您可以获取上下文并将其投射到您的活动中。您可以调用您的活动的公共方法。