如何在我的 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's
onCreate
开始OnboardingActivity
【讨论】:
不会只是扩展主题吗? 但是大多数人使用启动屏幕在后台加载额外的东西(例如,慢速库等)...我认为您的启动应该是您的 MainActivity 的一部分,通过添加像使用移动应用程序一样为您的主题添加背景图片?【参考方案2】:访问以下站点并从那里复制代码并根据您的活动名称进行更改,img 名称。也对您的清单进行更改以使用启动屏幕启动应用程序
http://www.coderefer.com/android-splash-screen-example-tutorial/
【讨论】:
您好,感谢您的回答,但这仅适用于手机,但我要求的是电视 你在应用这种技术时有什么问题吗?看起来应该可以工作了以上是关于如何在我的 android 电视应用中添加启动画面?的主要内容,如果未能解决你的问题,请参考以下文章