【问题标题】:How to implement double tap for Android live wallpapers?Android动态壁纸如何实现双击?
【发布时间】:2011-10-03 06:10:18
【问题描述】:

我想为 Android 动态壁纸实现双击事件。 可悲的是,我找不到任何具体的代码来做到这一点。

目前我找到了一个使用引擎类的 onTouchEvent 方法的解决方法:

public void onTouchEvent(MotionEvent event) {
  long time = android.os.SystemClock.currentThreadTimeMillis();

  if(((time - mLastTouchTime) < 500) && ((time - mLastTouchTime) > 100))
  {
    if(!mIsPlayed && mSound)
      {
        mIsPlayed = true;
        int sound = R.raw.hell;
        if(mTheme.equals("rose"))
          sound = R.raw.rose;
        if(mTheme.equals("greed"))
          sound = R.raw.greed;

        MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound);   
          mp.start();
          mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
      @Override
      public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mp.release();
        mIsPlayed = false;
      }
    });
      }
  }

  mLastTouchTime = time;
  super.onTouchEvent(event);
}

嗯,这不是一个优雅的解决方案。我知道有些壁纸实现了双击。但我不知道如何自己做。

所以在正确的方向上“点击”会很好。如有必要,我将接受“双击”。 :D

您好, 罗伯特

【问题讨论】:

  • 供您参考:android 标准键盘处理双击的方式与您完全相同。因此,我认为没有更好的解决方案来做到这一点;)
  • 感谢您提供的信息。是否有任何示例代码可以让我找到正确的时间间隔值?
  • 我认为由您来选择 :) 我记得 android 键盘双击延迟设置为 800 毫秒。 Android源已关闭,我没有验证这一点。

标签: android live-wallpaper


【解决方案1】:

使用http://developer.android.com/reference/android/view/GestureDetector.html

例如:

public class AndroidTestActivity extends Activity {

    private GestureDetector gestureDetector;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener(){
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                Log.e("onDoubleTap", e.toString());
                //handle double tap
                return true;
            }
        });
    }
}

【讨论】:

  • 您好丹尼尔,谢谢您的回答。我有点困惑,因为我试过了,但没有结果。但是,现在它运行良好。此解决方案绝对是捕获双击事件的首选方法。十分感谢! :)
  • @xong 请xong帮忙!我正在尝试做和你一样的事情。请您发布您的代码???非常感谢!!!丽莎
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多