如何处理自动屏幕切换以及触摸事件以移动到另一个屏幕android?
How to handle automatic screen switching and also touch event to move to another screen android?
我正在做一个闪屏,在一段时间后它会切换到另一个屏幕。如果用户不想等待这段时间,他们可以点击启动画面切换到另一个屏幕。但问题是,当用户点击初始屏幕时,它会转到另一个屏幕。同时还自动运行一段时间,以便第二个屏幕打开两次。如何克服这个问题?
下面是我在需要处理点击和自动切换到另一个屏幕时尝试的代码,但它失败了。
public class SplashScreen extends AppCompatActivity {
private TextView bride, groom, weds;
private TextView date;
private LinearLayout animLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
// when user taps and move to next screen, after certain duration, this also calls where two times WelcomePage is called.
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle, R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim, R.anim.translate);
// close this activity
finish();
}
}, 5000);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
//i need to handle this case too..when user taps the screen to move.
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle, R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim, R.anim.translate);
// close this activity
finish();
break;
}
return true;
}
创建两个变量。
Handler handler;
Runnable runnable;
在您的 onCreate 方法中执行此操作。
handler = new Handler;
runnable = new Runnable() {
// when user taps and move to next screen, after certain duration, this also
calls where two times WelcomePage is called.
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle,
R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim,
R.anim.translate);
// close this activity
finish();
}
}
然后将可运行对象添加到处理程序
handler.postDelayed(runnable,5000);
并且在触摸事件中
case MotionEvent.ACTION_DOWN:
handler.removeCallbacks(runnable);
我正在做一个闪屏,在一段时间后它会切换到另一个屏幕。如果用户不想等待这段时间,他们可以点击启动画面切换到另一个屏幕。但问题是,当用户点击初始屏幕时,它会转到另一个屏幕。同时还自动运行一段时间,以便第二个屏幕打开两次。如何克服这个问题?
下面是我在需要处理点击和自动切换到另一个屏幕时尝试的代码,但它失败了。
public class SplashScreen extends AppCompatActivity {
private TextView bride, groom, weds;
private TextView date;
private LinearLayout animLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
// when user taps and move to next screen, after certain duration, this also calls where two times WelcomePage is called.
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle, R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim, R.anim.translate);
// close this activity
finish();
}
}, 5000);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int X = (int) event.getX();
int Y = (int) event.getY();
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
//i need to handle this case too..when user taps the screen to move.
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle, R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim, R.anim.translate);
// close this activity
finish();
break;
}
return true;
}
创建两个变量。
Handler handler;
Runnable runnable;
在您的 onCreate 方法中执行此操作。
handler = new Handler;
runnable = new Runnable() {
// when user taps and move to next screen, after certain duration, this also
calls where two times WelcomePage is called.
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, WelcomePage.class);
startActivity(i);
//overridePendingTransition(R.drawable.from_middle,
R.drawable.to_middle);
overridePendingTransition(R.anim.left_right_anim,
R.anim.translate);
// close this activity
finish();
}
}
然后将可运行对象添加到处理程序
handler.postDelayed(runnable,5000);
并且在触摸事件中
case MotionEvent.ACTION_DOWN:
handler.removeCallbacks(runnable);