【问题标题】:Android home screen launcherAndroid 主屏幕启动器
【发布时间】:2012-08-15 18:32:52
【问题描述】:

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

我对此做了一些研究,我发现了

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

如果我将此添加到徽标活动中,那么如何自动调用 app_home_screen 活动 希望我能清楚地解释这个问题。

【问题讨论】:

  • 你的意思是像Splash screen
  • 我寻找了启动画面,是的,我只想要那个功能。谢谢这个词,让我谷歌一下。

标签: android android-intent launcher


【解决方案1】:

你需要:

  • 添加一个新的 Activity SplashActivity,它将作为您应用的启动 Activity。
  • 当您的应用启动时,启动您的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>

【讨论】:

  • 为什么我不能使用 SLEEP 方法而不是创建 welcomeThread ?希望我可以在 Android 中使用 SLEEP。以这种方式实施的任何特殊原因?
【解决方案2】:

虽然其他答案肯定有效,但这里有一个替代方法,可以避免仅针对您的徽标进行单独的活动:

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

您的 ImageView 将消失,其他布局元素将归位。

【讨论】:

    【解决方案3】:

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

    要开始第二个活动,您将使用“意图”,例如

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

    只需确保在您的主页类中扩展 Activity 类

    【讨论】:

      【解决方案4】:

      让当您的应用程序图标被点击时被调用的主要活动是一个只有您的徽标的视图的活动。一些简单的东西,只是一个RelativeLayout 和一个ImageView。延迟一段时间后,让这个活动开始你的实际主要活动。

      【讨论】:

      • 我试过这个,使用 SystemClock.sleep(TIME) 但在这种情况下,即使我在睡眠前设置了内容视图,也会在 TIME 秒后出现徽标屏幕。 ?你知道原因吗。我猜 setcontentview 会在方法退出之前执行?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多