0

我正在关注在我的 android 项目中实现启动画面的本教程,并且我希望每当用户在屏幕上点击两次时关闭启动画面。如果这可以使用触摸事件来完成,那么我如何使用它们?

4

3 回答 3

0

最简单的方法是使用手势检测器。

将 id 添加到您的初始 LinearLayout 中,以便您可以在代码中获取对它的引用

然后在 MainActivity 的 onCreate 中,您需要执行以下操作:

@Override
public void onCreate() {
super.onCreate();
...
LinearLayout splashBg = (LinearLayout)findViewById(R.id.splash_bg);
GestureListener mGestureListener = new GestureListener();
GestureDetector mGestureDetector = new GestureDetector(this, mGestureListener);
splashBg.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return mGestureDetector.onTouchEvent(event);
    }
});
}//end onCreate

您需要创建此自定义 GestureListener 来监听双击,然后关闭启动画面并继续下一个活动

private class GestureListener implements GestureDetector.OnDoubleTapListener {

        @Override
        public boolean onDoubleTap(MotionEvent e) {
            MainActivity.this.finish();

            if (!mIsBackButtonPressed) {
                 // start the home activity 
                 Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                 MainActivity.this.startActivity(intent);
            }
            return true;
        }

        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            return false;
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            return false;
        }

    }
于 2013-07-16T11:34:53.757 回答
0

使用此代码设置启动画面

 int touchcount=0;
 LinearLayout layout;
 layout=(LinearLayout) findViewById(R.id.main);
 layout.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
                      touchevent++;
                         if(touchcount==2)
                             {
                               Intent intent=new Intent(youractivity,this,nextactivity.class);
        startActivity(intent);
        finish();
                              }

            return false;

        }
    });
于 2013-07-16T11:36:36.550 回答
0

你需要从那里看一下'onInterceptTouch',你可以'finish();' 照常

http://developer.android.com/reference/android/view/ViewGroup.html#onInterceptTouchEvent%28android.view.MotionEvent%29

您还可以设置 LinearLayouts android:clickable="true"

然后使用 onclicklistner

final LinearLayout MYLAYOUT = (LinearLayout) findViewById(R.id.MYLAYOUT);
    MYLAYOUT.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

您可能还必须将android:duplicateParentState="true"添加到线性布局内的所有视图中

于 2013-07-16T11:06:12.843 回答