【问题标题】:Create an overlay over a fragment in Android TV?在 Android TV 中的片段上创建叠加层?
【发布时间】:2016-06-21 07:22:36
【问题描述】:

我是第一次开始学习如何构建 Android TV,因此对于这个问题的一个可能显而易见的答案,我深表歉意。基本上,我试图复制没有互联网连接时 Android TV Youtube 应用程序的显示方式,如图所示:

YouTube 在背面显示了主要片段(我相信),没有视频,似乎有一个透明的覆盖层,上面有 ImageViewTextViewButton。一旦有互联网连接并且用户点击重试按钮,它会加载视频内容并且覆盖消失。

我正在尝试实现这种完全相同的技术,并且通过互联网连接,我目前有这个:

在没有互联网连接的情况下,我想展示一些类似于 YouTube 的东西。

这是我的一些基本代码:

MainActivity.java:

public class MainActivity extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_browse_fragment"
    android:name="com.ui.MainFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ui.MainActivity"
    tools:deviceIds="tv"
    tools:ignore="MergeRootFrame" />

MainFragment.java:

public class MainFragment extends DetailsFragment
{
    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);

        setupUIElements();

        setupThings();
    }

    public void setupThings()
    {
        if (isOnline() == true)
        {
            prepareBackgroundManager();
            loadRows();
            setupEventListeners();
        }
        else
        {
            // I don't know what to do here???
        }
    }

    public Boolean isOnline()
    {
        try
        {
            Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
            int returnVal = p1.waitFor();
            boolean reachable = (returnVal == 0);

            return reachable;
        }
        catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }
}

很简单,如果有互联网连接,我会从网上加载视频,否则,我会像 YouTube 一样通知用户。

我被困在 else 语句中。我不确定要在那里创建什么来实现这个覆盖。

我在这里查看了一些关于切换片段的解决方案:

  1. Switching between Fragment view
  2. How to switch between fragments during onclick?

但是,我不确定出于我的目的,我是否需要这样做?

有人能指出我正确的方向吗?我不希望有人像 YouTube 应用一样编写整个代码,但我想要一个小样本,可能只是 ButtonTextView?这将允许我遵循结构并对其进行修改以满足我的要求。

谢谢。

【问题讨论】:

    标签: java android android-fragments android-tv


    【解决方案1】:

    您可以查看Leanback Sample app,其中包含BrowseErrorFragment 的示例。

    显示:

    BrowseErrorFragment errorFragment = new BrowseErrorFragment();
    getFragmentManager().beginTransaction().replace(R.id.main_frame, errorFragment)
                            .addToBackStack(null).commit();
    

    【讨论】:

    • 你的回答为我指明了正确的方向,我改用getFragmentManager().beginTransaction().add(R.id.main_browse_fragment, internetError).commit();,但不知道为什么我会在我的情况下使用添加而不是替换
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多