Q
检测位图上的触摸
9
A
回答
28
对我来说是伟大的你应该工作的东西,像这样:
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction();
int x = event.getX() // or getRawX();
int y = event.getY();
switch(action){
case MotionEvent.ACTION_DOWN:
if (x >= xOfYourBitmap && x < (xOfYourBitmap + yourBitmap.getWidth())
&& y >= yOfYourBitmap && y < (yOfYourBitmap + yourBitmap.getHeight())) {
//tada, if this is true, you've started your click inside your bitmap
}
break;
}
}
这是一个开始,但你需要处理case MotionEvent.ACTION_MOVE
和case MotionEvent.ACTION_UP
,以确保您妥善处理用户输入。每次用户都会调用onTouchEvent
方法:放下手指,移动屏幕上的手指或抬起手指。每次事件携带手指所在的X和Y坐标。例如,如果您想检查是否有人在您的位图内部点击,您应该执行一些操作,例如设置一个布尔值,使触摸在ACTION_DOWN位图内开始,然后检查ACTION_UP是否仍位于位图内部。
3
史蒂夫, 谷歌有处理UI事件@http://developer.android.com/guide/topics/ui/ui-events.html一个伟大的文章和教程。这就是让我开始和它:-)
0
这将检测触摸并检查它是否不透明。如果你的位图不是矩形,你需要这个。 myBitmap只是我使用的一个简单的容器类。
private boolean clickOnBitmap(MyBitmap myBitmap, MotionEvent event) {
float xEnd = myBitmap.originX() + myBitmap.width();
float yEnd = myBitmap.originY() + myBitmap.height();;
if ((event.getX() >= myBitmap.originX() && event.getX() <= xEnd)
&& (event.getY() >= myBitmap.originY() && event.getY() <= yEnd)) {
int pixX = (int) (event.getX() - myBitmap.originX());
int pixY = (int) (event.getY() - myBitmap.originY());
if (!(myBitmap.getBitmap().getPixel(pixX, pixY) == 0)) {
return true;
} else {
return false;
}
}
return false;
}
这是完整
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (clickOnBitmap(dog, event)) {
Toast.makeText(getContext(), "dog", Toast.LENGTH_SHORT).show();
} else if (clickOnBitmap(mouse,event)) {
Toast.makeText(getContext(), "mouse", Toast.LENGTH_SHORT).show();
}
return true;
case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
return true;
}
return false;
}
相关问题
- 1. 在UIScrollView上检测触摸位置?
- 2. 在UiScrollView上检测触摸位置
- 3. GLKit检测触摸位置
- 4. 检测图像上彩色斑点的触摸(位图)
- 5. 如何检查位图上的触摸
- 6. 检测子视图上的触摸
- 7. 在UIView上检测触摸
- 8. 在CCSprite上检测触摸
- 9. 在NSOpenGLView上检测触摸
- 10. 在webview上检测触摸
- 11. Sprite Kit检测触摸位置
- 12. 触摸不检测?
- 13. android检测触摸
- 14. android检测触摸
- 15. 检测CAShapeLayer触摸
- 16. 检测触摸UIButton
- 17. UINavigationItem:检测触摸
- 18. 触摸后如何检测触摸
- 19. Android - 检测电容式触摸屏上的触摸压力?
- 20. 检测触摸并触摸包含UIControls的视图
- 21. 在图像视图中检测触摸
- 22. 检测IPhone上的UIImageView触摸
- 23. 如何检测NSTextAttachment上的触摸
- 24. 检测iPhone上的特殊触摸
- 25. 检测UIWebview上的触摸事件?
- 26. 检测UILabel上的触摸事件
- 27. 检测UIView边框上的触摸
- 28. 如何检测MPMoviePlayerViewController上的触摸
- 29. 检测部分触摸上的UIButton
- 30. AndroidPlot:检测点上的触摸事件
我想用你的代码,但不知道如何得到位图的X和Y触摸代码。你能帮我吗? – 2012-09-06 12:57:01
如果您要将位图绘制到画布上,则必须已知其X和Y值,因为必须将这些值作为参数传递给'canvas.drawBitmap'方法。 – 2012-09-12 17:01:32