2012-08-15 94 views
0

首先让我告诉你们,我是Android应用程序开发的全新手。 我想知道如何启动主屏幕和应用程序主屏幕。即每当您点击某个应用程序时,首先会显示一些徽标屏幕,然后自动跳转到应用程序的主屏幕。 我有我的应用程序运行的主屏幕,我只是想在用户点击应用程序时添加某种标志屏幕。Android主屏幕发射器

我做了这一点点研究,我发现了

<intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

如果我添加这标志活动,则如何调用app_home_screen活动自动 希望我足够清楚解释的问题。

+1

你的意思是像一个[闪屏](http://en.wikipedia.org/wiki/Splash_screen)? – iTurki 2012-08-15 18:35:08

+0

我寻找启动画面,是的,我只想要该功能。 感谢您的期限,让我谷歌。 – user1544460 2012-08-15 18:41:03

回答

1

您可以尝试的一种解决方案是将徽标加载为主要活动,并在调用第二个活动(即“真正的”主页)前让应用暂停几秒钟。

要开始,你将使用“意向”如

Intent myIntent = new Intent(myFirstActivity.this, realHomePage.class); 
myFirstActivity.this.startActivity(myIntent); 

是第二次活动只需确保延长您的主页类Activity类

0

有被调用时的主要活动你的应用图标被点击是一个只有你的标志的视图。简单一点,就是一个RelativeLayout和一个ImageView。延迟一段时间后,让这项活动以意向开始您的实际主要活动。

+0

我试过这个,使用了SystemClock.sleep(TIME),但是在这种情况下,即使我在sleep之前设置了setcontentView,也会在TIME秒后出现Logo屏幕。 ?你知道原因吗?我猜setcontentview会在方法退出之前执行? – user1544460 2012-08-16 13:36:21

2

您需要:

  • 添加一个新的活动SplashActivity,这将是您的应用程序的启动活动。
  • 当您的应用程序启动时,启动您的SplashActivity并等待一段时间。
  • 当您完成等待时,开始您的MainActivity并完成SplashActivity

这里是一个很好的例子:

SplashScreenActivity:

public class SplashScreenActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_layout); //You need to define it in your layouts 
    final int welcomeScreenDisplay = 3000; //splash lasts for 3 sec. You can change it 
    /** create a thread to show splash up to splash time */ 
    Thread welcomeThread = new Thread() { 
     int wait = 0; 
     @Override 
     public void run() { 
      try { 
       super.run(); 
       while (wait < welcomeScreenDisplay) { 
        sleep(100); 
        wait += 100; 
       } 
      } catch (Exception e) { 
       System.out.println("EXc=" + e); 
      } finally { 
       startActivity(new Intent(SplashScreenActivity.this, MainScreenActivity.class)); 
       finish(); 
      }} 
     }; 
     welcomeThread.start(); 

    } 
} 

而且不要忘记到活动添加到您的清单文件:

<activity 
    android:name=".SplashScreenActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name=".MainScreenActivity" 
    android:label="@string/app_name" > 
</activity> 
+1

为什么不能使用SLEEP方法而不是创建welcomeThread?希望我可以在Android中使用SLEEP。 实现这种方式的任何特定原因? – user1544460 2012-08-15 19:23:52

+0

你的意思是使用sleep()而没有线程? – iTurki 2012-08-15 19:25:13

2

虽然其他答案肯定有效,这是避免单独进行一项活动的另一种方法为您的徽标:

  1. 根据需要放置ImageView(即,覆盖整个屏幕)放在主要活动布局中的其他元素之前(它们将具有屏幕外的初始布局)。
  2. 在onCreate中调用setContentView之后,运行SystemClock.sleep(LOGO_TIME),其中LOGO_TIME是一个整数,表示希望显示徽标的毫秒数。
  3. 最后,调用setVisibility(View.GONE)。

您的ImageView将消失,其他布局元素将落入其位置。