如何在我的 android 电视应用中添加启动画面?

Posted

技术标签:

【中文标题】如何在我的 android 电视应用中添加启动画面?【英文标题】:How to add a splash screen to my android tv app ? 【发布时间】:2017-01-11 02:41:26 【问题描述】:

有人知道如何在 android TV 应用中添加启动画面吗?让我感到困难的是,主要活动应该有 Theme.Leanback 以便在 google play 中被接受,并且要有一个启动画面,你需要自己的风格/主题。那么如何做到这一点呢?

【问题讨论】:

你能从主题扩展吗?类似<style name="AppTheme" parent="@style/Theme.Leanback"> <item name="android:windowBackground">@color/splash_background</item> </style> 我遇到了类似的问题...你是怎么解决这个问题的? 【参考方案1】:

您可以稍微自定义 Leanback 的 OnboardingFragment 以将其显示为启动屏幕。 OnboardingFragment 允许您添加入职步骤,但如果您不需要它们,您可以在 onCreateView 中设置 setLogoResourceId

请注意,如果您将页数保持为零,则它将崩溃,因此请保持页数为 1 并且启动持续时间大于 LOGO_SPLASH_PAUSE_DURATION_MS = 1333,否则将显示带有“开始”按钮的页面。

这个想法是最初使用仅带有初始屏幕的载入片段,并随着应用程序的增长添加载入步骤。

入职片段

public class OnboardingFragment extends android.support.v17.leanback.app.OnboardingFragment 
    private static final long SPLASH_DURATION_MS = 2000;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View view = super.onCreateView(inflater, container, savedInstanceState);
        if (view != null) 
            view.setBackgroundColor(Color.RED);
        
        setLogoResourceId(R.drawable.logo);
        Handler handler = new Handler();
        Runnable runnable = new Runnable() 
            @Override
            public void run() 
                onFinishFragment();
            
        ;
        handler.postDelayed(runnable, SPLASH_DURATION_MS);
        return view;
    

    @Override
    protected void onFinishFragment() 
        super.onFinishFragment();
        // Our onboarding is done
        // Let's go back to the MainActivity
        getActivity().finish();
    

    @Override
    protected int getPageCount() 
        return 1;
    

    @Override
    protected String getPageTitle(int pageIndex) 
        return null;
    

    @Override
    protected String getPageDescription(int pageIndex) 
        return null;
    

    @Nullable
    @Override
    protected View onCreateBackgroundView(LayoutInflater inflater, ViewGroup container) 
        return null;
    

    @Nullable
    @Override
    protected View onCreateContentView(LayoutInflater inflater, ViewGroup container) 
        return null;
    

入职活动

/*
 * OnboardingActivity for OnboardingFragment
 */
public class OnboardingActivity extends Activity 

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.onboarding);
    

onboarding.xml

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/onboarding_fragment"
    android:name="com.example.android.tvleanback.ui.OnboardingFragment"
    android:layout_
    android:layout_ />

AndroidManifest内声明OnboardingActivity

<activity android:name=".ui.OnboardingActivity"
            android:enabled="true"
            android:exported="true"
            android:theme="@style/Theme.Leanback.Onboarding" />

MainActivity'sonCreate开始OnboardingActivity

【讨论】:

不会只是扩展主题吗? 但是大多数人使用启动屏幕在后台加载额外的东西(例如,慢速库等)...我认为您的启动应该是您的 MainActivity 的一部分,通过添加像使用移动应用程序一样为您的主题添加背景图片?【参考方案2】:

访问以下站点并从那里复制代码并根据您的活动名称进行更改,img 名称。也对您的清单进行更改以使用启动屏幕启动应用程序

http://www.coderefer.com/android-splash-screen-example-tutorial/

【讨论】:

您好,感谢您的回答,但这仅适用于手机,但我要求的是电视 你在应用这种技术时有什么问题吗?看起来应该可以工作了

以上是关于如何在我的 android 电视应用中添加启动画面?的主要内容,如果未能解决你的问题,请参考以下文章

添加启动画面后Android应用程序强制关闭

设置内容视图();在我的启动画面活动中出错

如何从 ionic 2 应用程序中删除启动画面? [复制]

如何像启动画面一样只运行一次活动

如何将 UIActivityIndi​​cator 添加到我的应用程序的启动画面?

颤振启动画面