我正在跟踪This Tutorial在我的android项目中实现启动画面,并且我希望只要用户在屏幕上点击两次,就会关闭启动画面。如果可以使用触摸事件来完成,那么我如何使用它们?
答案 0 :(得分:0)
你需要从那里看'onInterceptTouch'你可以'完成();'像往常一样
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”
答案 1 :(得分:0)
最简单的方法是使用一个手势检测器。
为您的启动LinearLayout添加一个ID,以便您可以在代码
中获取对它的引用
然后在onCreate of MainActivity中你需要做:
@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;
}
}
答案 2 :(得分: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;
}
});