安卓欢迎界面一般有普通图标页和广告页两种,广告页上同时显示倒数读秒同时可以选择跳过。
老大让我实现两种并在主界面中可以设置选择哪种模式还有时长,结果我误入歧途,做成了选择之后直接跳到欢迎界面,还费劲用handler还有startActivityForResult传数据过来,后来老大指点迷津,原来只需要把主界面的选项存下来,然后下次启动时在启动页判断就好了,这里我用了SharedPreferences。
首先把标题栏隐藏
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //无title getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_splash);//放在后面
一、普通欢迎界面
new一个子线程然后使程序休眠就好了,然后跳转界面。
new Thread(new Runnable() { //创建子线程 @Override public void run() { try{ sleep(Integer.valueOf(time) * 1000);//休眠五秒 if(!time.equals("")){startActivity(new Intent(Splash.this, MainActivity.class));//为了避免点击跳转后跳转两次 Splash.this.finish(); } }catch (InterruptedException e){ e.printStackTrace(); } } }).start();
二、可跳过的广告页
再new一个子线程,倒数每秒向handler传message,在handler中执行UI操作,也就是显示倒数。
new Thread() { @Override public void run() { try { if (time != null && !time.equals("")) { for (int i = Integer.valueOf(time); i >= 0; i--) ; handler.sendEmptyMessage(i); sleep(1000); } } } catch (InterruptedException e) { e.printStackTrace(); } } }.start();
public Handler handler= new Handler(){ public void handleMessage(Message msg){ super.handleMessage(msg); skip.setText("(" + String.valueOf(msg.what) + "s)跳过"); } };
跳转:设置TextView的点击事件
skip.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { time="";//为了避免点击跳过之后,普通页的线程未结束 startActivity(new Intent(Splash.this, MainActivity.class)); Splash.this.finish(); } });