如何将启动画面添加到我的Android电视应用程序? [英] How to add a splash screen to my android tv app ?

查看:166
本文介绍了如何将启动画面添加到我的Android电视应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道如何向Android TV App添加初始屏幕吗?对我来说很难的是,主要活动应该具有Theme.Leanback以便在google play中被接受,并拥有一个初始屏幕,您需要自己的风格/主题.那么该怎么做呢?

does anyone know how to add a splash screen to an Android TV App ? what is making it hard for me is that the main activity should have Theme.Leanback in order to be accepted in the google play , and to have a splash screen you need your own style/theme. So how to do this ?

推荐答案

您可以自定义Leanback的

You can customise Leanback's OnboardingFragment slightly to display it as splash screen. OnboardingFragment allows you to add on-boarding steps but if you don't need them you can just set setLogoResourceId inside onCreateView.

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

Note that it crashes if you keep page count to zero so keep page count to one and splash duration greater than LOGO_SPLASH_PAUSE_DURATION_MS = 1333 otherwise a page with "Get Started" button will be displayed.

该想法是最初使用启动屏幕上的入门片段,并随着应用程序的增长添加入门步骤.

The idea is to use onboarding fragment with just a splash screen initially and add on-boarding steps as your application grows.

OnboardingFragment

OnboardingFragment

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

OnboardingActivity

/*
 * 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

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_width="match_parent"
    android:layout_height="match_parent" />

AndroidManifest

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

MainActivity's onCreate

这篇关于如何将启动画面添加到我的Android电视应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆