【问题标题】:Android visual effect on touch on a activity触摸 Activity 时的 Android 视觉效果
【发布时间】:2012-08-22 17:01:33
【问题描述】:

我正在开发一个 Android 应用,我想在 UI 中添加一些吸引眼球的东西。我有一个活动(我们称之为 MainActivity),上面有一些文本字段、按钮和画廊。 我想要实现的是:当用户触摸此活动的某个位置时,在他触摸的点应该有一些视觉效果(例如火花等)。

所以我的问题的基本部分是: a)如何确定用户触摸的位置 b) 如何在屏幕上绘制我的效果(作为 Activity 的“叠加层”)。

提前感谢每一个有用的答案。

(我已经查看了this 的答案,但它似乎不适用于我的情况。)

【问题讨论】:

    标签: android touch android-activity effect


    【解决方案1】:

    要进一步回答您的问题并进行叠加,请查看 APIDemos -> Graphics -> OpenGL ES -> Translucent GLSurfaceView。这将帮助您在活动上创建叠加层。 API 演示中可能还有一些其他示例可以为您提供一些帮助。 Android 的 API 演示是解决一些已知问题的很好的示例。

    【讨论】:

      【解决方案2】:

      首先,您必须将 onTouchListener 添加到您的根布局中,然后您可以获得用户触摸屏幕的坐标。 示例:

         float x,y;
         rl = (RelativeLayout) findViewById(R.id.root_layout);
         rl.setOnTouchListener(new OnTouchListener() {
      
              @Override
              public boolean onTouch(View v, MotionEvent event) {
                  float x = event.getX();
                  float y = event.getY();
                      return super.onTouchEvent();
              }
      
          });
      

      【讨论】:

      • 谢谢,回答了 a) 部分!关于如何在活动中绘制覆盖视图的东西的任何想法?是否有可能让画布覆盖我的 UI?
      【解决方案3】:

      如果您正在使用 ICS,那么我建议您查看“设置”应用程序中的“开发人员选项”。如果您不使用 ICS,我相信您可以查看 APIDEMOS for touchevents。他们在触球上画线。里面的代码可以让你开始。

      【讨论】:

        【解决方案4】:

        您应该覆盖活动的onTouchEvent 方法。然后就可以获取到触摸事件的坐标了:

        @Override
        public boolean onTouchEvent(MotionEvent event) {
        
            float touchX = event.getX();
            float touchY = event.getY();
        
            switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // touch down
                break;
            case MotionEvent.ACTION_MOVE:
                // movement
                break;
            case MotionEvent.ACTION_UP:
                // touch up
                break;
            default:
                // default
            }
        
            return super.onTouchEvent(event);
        }
        

        【讨论】:

        • 谢谢,回答了 a) 部分!关于如何在活动中绘制覆盖视图的东西的任何想法? (b)
        • 例如,您可以将 ImageView 放在可以放置动画或绘制图像的坐标处。这就是我会尝试的。
        猜你喜欢
        • 2021-05-20
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 2015-05-13
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        相关资源
        最近更新 更多