
mHandlersendEmptyMessageAtTime(GOTO_MAIN_ACTIVITY, 5000);// 3秒跳转这句话注释掉,你的欢迎界面应该可以显示并停留在那。我看着应该是你的消息处理不对。
创建一个Splash activity
对应一个xml,我直接把作为背景处理,这样可以直接将裁剪好,不用另外处理。
去Androidmanife设置最先加载
去style里去除titlebar实现全屏效果
1 import androidappActivity;
2 import androidcontentIntent;
3 import androidcontentSharedPreferences;
4 import androidcontentSharedPreferencesEditor;
5 import androidosBundle;
6 import androidosHandler;
7
8 / 欢迎界面 /
9 public class WelcomeAct extends Activity {
10
11 private boolean isFirstIn = false;
12 private static final int TIME = 2000;
13 private static final int GO_HOME = 1000;
14 private static final int GO_GUIDE = 1001;
15
16 private Handler mHandler = new Handler() {
17 public void handleMessage(androidosMessage msg) {
18 switch (msgwhat) {
19 // 跳入主界面
20 case GO_HOME:
21 goHome();
22 break;
23 // 跳入引导页
24 case GO_GUIDE:
25 goGuide();
26 break;
27 }
28 };
29 };
30
31 @Override
32 protected void onCreate(Bundle savedInstanceState) {
33 superonCreate(savedInstanceState);
34 setContentView(Rlayoutwelcome);
35 init();
36 }
37
38 private void init() {
39 SharedPreferences perPreferences = getSharedPreferences("jike",
40 MODE_PRIVATE);
41 isFirstIn = perPreferencesgetBoolean("isFirstIn", true);
42 if (!isFirstIn) {
43 mHandlersendEmptyMessageDelayed(GO_HOME, TIME);
44 } else {
45 mHandlersendEmptyMessageDelayed(GO_GUIDE, TIME);
46 Editor editor = perPreferencesedit();
47 editorputBoolean("isFirstIn", false);
48 editorcommit();
49 }
50 }
51
52 private void goHome() {
53 Intent i = new Intent(WelcomeActthis, MainActivityclass);
54 startActivity(i);
55 finish();
56 }
57
58 private void goGuide() {
59 Intent i = new Intent(WelcomeActthis, Guideclass);
60 startActivity(i);
61 finish();
62 }
63
64 }
1 import javautilArrayList;
2 import javautilList;
3 import androidappActivity;
4 import androidcontentIntent;
5 import androidosBundle;
6 import androidsupportv4viewViewPager;
7 import androidsupportv4viewViewPagerOnPageChangeListener;
8 import androidviewLayoutInflater;
9 import androidviewView;
10 import androidviewViewOnClickListener;
11 import androidwidgetButton;
12 import androidwidgetImageView;
13
14 / 引导页 /
15 public class Guide extends Activity implements OnPageChangeListener {
16
17 private ViewPager vp;
18 private ViewPagerAdapter vpAdapter;
19 private List<View> views;
20 private ImageView[] dots;
21 private int[] ids = { Ridiv1, Ridiv2, Ridiv3 };
22 private Button start_btn;
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 superonCreate(savedInstanceState);
27 setContentView(Rlayoutguide);
28 initViews();
29 initDots();
30 }
31
32 private void initViews() {
33 LayoutInflater inflater = LayoutInflaterfrom(this);
34
35 views = new ArrayList<View>();
36 viewsadd(inflaterinflate(Rlayoutone, null));
37 viewsadd(inflaterinflate(Rlayouttwo, null));
38 viewsadd(inflaterinflate(Rlayoutthree, null));
39
40 vpAdapter = new ViewPagerAdapter(views, this);
41 vp = (ViewPager) findViewById(Ridviewpager);
42 vpsetAdapter(vpAdapter);
43 // 下标从0开始,所以第三个页面是get(2)。
44 start_btn = (Button) viewsget(2)findViewById(Ridstart_btn);
45 start_btnsetOnClickListener(new OnClickListener() {
46 @Override
47 public void onClick(View arg0) {
48 Intent i = new Intent(Guidethis, MainActivityclass);
49 startActivity(i);
50 finish();
51 }
52 });
53 vpsetOnPageChangeListener(this);
54 }
55
56 / 循环设置点 /
57 private void initDots() {
58 dots = new ImageView[viewssize()];
59 for (int i = 0; i < viewssize(); i++) {
60 dots[i] = (ImageView) findViewById(ids[i]);
61 }
62 }
63
64 @Override / 滑动状态改变的时候 /
65 public void onPageScrollStateChanged(int arg0) {
66 // TODO Auto-generated method stub
67 }
68
69 @Override / 当页面被滑动时候调用 /
70 public void onPageScrolled(int arg0, float arg1, int arg2) {
71 // TODO Auto-generated method stub
72 }
73
74 @Override / 当前新的页面被选中时调用 /
75 public void onPageSelected(int arg0) {
76 for (int i = 0; i < idslength; i++) {
77 if (arg0 == i) {
78 // 亮点
79 dots[i]setImageResource(Rdrawablelogin_point_selected);
80 } else {
81 // 暗点
82 dots[i]setImageResource(Rdrawablelogin_point);
83 }
84 }
85 }
86
87 }
1 <xml version="10" encoding="utf-8">
2 <RelativeLayout xmlns:android=">
这个界面主要的作用有:
这个界面是为了让app有更好的体验,不会让用户感觉 太突兀了,所以现在app市场包括ios的应用基本都是有欢迎界面的。
这个界面一般称为启动页面,在android开发中,开发者可以设定在该界面的停留时间,从而可以在后台进行一些初始化的工作的。
启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo、公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。
Android 应用程序创建一个启动界面Splash Screen非常简单。比如创建一个工程MySample,主Acitity就叫MySample,创建另一个Activity叫 SplashScreen,用于显示启动界面,资源文件为splashxml。至于如何制作SplashSceen界面,这不是本文章要讨论的东西,就此略过。
SplashScreen的代码如下:
package comctoofandroid;
import androidappActivity;
import androidcontentIntent;
import androidosBundle;
import androidviewMotionEvent;
public class SplashScreen extends Activity {
protected boolean _active = true;
protected int _splashTime = 5000;
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutsplash);
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(_active && (waited < _splashTime)) {
sleep(100);
if(_active) {
waited += 100;
}
}
} catch(InterruptedException e) {
// do nothing
} finally {
finish();
// 启动主应用
startActivity(new Intent("comctoofandroidMySampleMyApp"));
stop();
}
}
};
splashTreadstart();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (eventgetAction() == MotionEventACTION_DOWN) {
_active = false;
}
return true;
}
}
然后在AndroidMainfestxml中修改代码如下:
<xml version="10" encoding="utf-8">
<manifest xmlns:android=""
package="comctoofandroid"
android:versionCode="1"
android:versionName="10">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="SplashScreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="androidintentactionMAIN" />
<category android:name="androidintentcategoryLAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MyApp">
<intent-filter>
<action android:name=" comctoofandroid MySampleMyApp " />
<category android:name="androidintentcategoryDEFAULT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
在这里负责注册两个活动。把负责管理启动界面Splash Screen的活动Activity作为应用程序的主活动,然后在SplashScreen中负责启动MyApp。
另:
很多应用都会有一个启动界面。欢迎画面慢慢隐现,然后慢慢消隐。实现这种效果的方法有两种(暂时只发现两种)
1、使用两个Activity,程序启动时候load第一张Activity,然后由tick触发N秒钟后startActivity另外一张Activity。
2、使用一个Activity,可以用到Viewgone() 这个方法。把Acitivity的某些元素移除。
Java代码
public class Splash extends Activity {
private final int SPLASH_DISPLAY_LENGHT = 3000; //延迟三秒
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutsplash);
new Handler()postDelayed(new Runnable(){
@Override
public void run() {
Intent mainIntent = new Intent(Splashthis,Mainclass);
SplashthisstartActivity(mainIntent);
Splashthisfinish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
当然可以再Splash中加入动画效果。
以上就是关于android程序启动时欢迎画面不显示,求助全部的内容,包括:android程序启动时欢迎画面不显示,求助、一、Android App启动图启动界面的简单实现、android怎么从引导页进入主页等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)