【问题标题】:Android touchlistener at specific canvas特定画布上的 Android touchlistener
【发布时间】:2017-07-14 08:15:56
【问题描述】:

希望得到一些伙伴的帮助。我正在创建一个自定义模拟时钟,它由时钟表盘、时针、分针、秒针和闹钟指针组成。用户可以转动闹钟指针来设置闹钟。我想让用户只触摸闹钟手而不是其他地方来设置闹钟。但是,我正在使用的当前触摸监听器方法将检测整个画布上的触摸,包括时钟表盘、时针等。如何检测用户在闹钟指针上的触摸并完成工作?

【问题讨论】:

    标签: android android-canvas ontouchlistener


    【解决方案1】:

    Canvas 不是布局,因此您在画布上绘制的视图将不再是普通视图。 只在闹钟部分听触摸事件是不可能的。你所能做的就是计算你按下(或向上)的指针是否正好在闹钟手上。

    【讨论】:

    • 好的,注意了。想问一下怎么知道闹铃指针的指针?谢谢。
    • Drawable 有一个 getBounds 方法,它返回它的边界(一个 rect 对象),你可以使用这个 rect 来计算。
    • 你的意思是像这样的 Rect outRect = new Rect(); int[] 位置 = 新的 int[2]; private boolean inViewBounds(View view, int x, int y){ view.getDrawingRect(outRect); view.getLocationOnScreen(位置); outRect.offset(location[0], location[1]);返回 outRect.contains(x, y); }
    • 不,它是视图,但可绘制(您的警报手是可绘制对象而不是视图)。 private boolean inDrawableBounds(Drawable drawable,int x,int y){rect = drawable.getBounds();然后检查point(x,y)是否在矩形内}
    • 感谢指正。我试过了,它确实可以检查特定的drawable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多