xon*_*ong 4 android live-wallpaper
我想为Android动态壁纸实现双击事件.可悲的是,我找不到任何具体的代码如何做到这一点.
目前我发现了使用Engine-class的onTouchEvent方法的workarround:
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);
}
Run Code Online (Sandbox Code Playgroud)
嗯,这不是一个优雅的解决方案.我知道有些壁纸实现了双击.但我不知道,如何自己做.
所以在正确的方向上"轻拍"会很好.如果有必要,我会接受"双击".:d
问候,罗伯特
使用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;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3341 次 |
| 最近记录: |