首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:如何反映你的触觉?(视觉指针问题)

Android:如何反映你的触觉?(视觉指针问题)
EN

Stack Overflow用户
提问于 2012-01-20 04:45:47
回答 1查看 1.2K关注 0票数 0

我对我的平板电脑的指针有问题。我正在设计一个艺术应用程序,我正在努力弄清楚如何反映我的运动(对称性)。目前,如果您用手指或手写笔触摸屏幕,则会绘制一个图像(以编程方式生成的圆圈),并将其更新到您移动手指/手写笔的任何位置。这工作得很好。但是现在我想增加两个新特性:水平对称和垂直对称。因此,如果你选择水平对称,另一个指针将出现在相反的X位置,但沿着相同的Y轴。因此,如果你触摸到300 x,250 y,另一个指针会显示在-300 x,250 y的屏幕上,和原来的指针一起。现在,当我尝试应用并测试它时,我仍然只得到原始指针。以下是我到目前为止所拥有的:

代码语言:javascript
复制
rLO.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction() & MotionEvent.ACTION_MASK) {

        case MotionEvent.ACTION_DOWN:               

            // Hardware accelerated at runtime
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
            cursor.x = (int)event.getX() - (cursor.radius / 2);
            cursor.y = (int)event.getY() - (cursor.radius / 2);
            cursor.onDraw(cursor.e);
            rLO.addView(cursor);

            if (hSym > 0) {
                vSym = 0;
                cursorH.x = -cursor.x;
                cursorH.y = cursor.y;
                cursorH.onDraw(cursorH.e);
                rLO.addView(cursorH);
            }

            if (vSym > 0) {
                hSym = 0;
                cursorV.x = cursor.x;
                cursorV.y = -cursor.y;
                cursorV.onDraw(cursorV.e);
                rLO.addView(cursorV);
            }
            break;

        case MotionEvent.ACTION_MOVE:
            // Hardware accelerated at runtime
            getWindow().setFlags(
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
                    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

            //update pointer to new position of stylus/finger
            cursor.x = (int)event.getRawX() - (cursor.radius / 2);
            cursor.y = (int)event.getRawY() - (cursor.radius / 2);
            rLO.removeView(cursor);
            rLO.addView(cursor);

            if (hSym > 0) {
                cursorH.x = -cursor.x;
                cursorH.y = cursor.y;
                rLO.removeView(cursorH);
                rLO.addView(cursorH);
            }

            if (vSym > 0) {
                cursorV.x = cursor.x;
                cursorV.y = -cursor.y;
                rLO.removeView(cursorV);
                rLO.addView(cursorV);
            }
            break;

        case MotionEvent.ACTION_UP:
            if (vSym > 0 || hSym > 0) {
                rLO.removeView(cursorH);
                rLO.removeView(cursorV);
            }
            rLO.removeView(cursor);

            break;
        } // end switch 

注意:我在“指针”的代码中使用了“”这个词。指针(游标)是从创建圆圈的不同类中以编程方式绘制的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-20 05:02:24

它可能正在工作,但问题是屏幕的左上角是(0,0)。任何负的位置都不在屏幕上。相反,将屏幕的宽度或高度分成半面镜子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8936845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档