Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AndroidTV中BrowseFragment中类似ViewPager的内容_Android_Android Fragments_Android Tv - Fatal编程技术网

AndroidTV中BrowseFragment中类似ViewPager的内容

AndroidTV中BrowseFragment中类似ViewPager的内容,android,android-fragments,android-tv,Android,Android Fragments,Android Tv,我是安卓电视的新手。请看下面的图片 在这张图片的顶部有一个克劳塞尔,所有红色标记的区域都是图像 我想用安卓电视制作这个屏幕。我已经使用了BrowseFragment。我使用了两个演示者,一个用于第一行,另一个用于另一行 我使用的代码: HomeFragment.java private CustomListRowPresenter mListRowPresenter; private void loadRows() { List<Movie> li

我是安卓电视的新手。请看下面的图片

在这张图片的顶部有一个克劳塞尔,所有红色标记的区域都是图像

我想用安卓电视制作这个屏幕。我已经使用了BrowseFragment。我使用了两个演示者,一个用于第一行,另一个用于另一行

我使用的代码:

HomeFragment.java

    private  CustomListRowPresenter mListRowPresenter;
    private void loadRows() {
        List<Movie> list = MovieList.setupMovies();
        mListRowPresenter = new CustomListRowPresenter(getActivity(),this);
        mRowsAdapter = new ArrayObjectAdapter(mListRowPresenter);
        CardPresenter cardPresenter = new CardPresenter(getActivity());

        mNumberOfRows = NUM_ROWS;
        HeaderItem gridHeader = new HeaderItem(0, "");
        GridItemPresenter mGridPresenter = new GridItemPresenter();
        ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(mGridPresenter);
        gridRowAdapter.add(getResources().getString(R.string.grid_view));
        gridRowAdapter.add(getString(R.string.error_fragment));
        gridRowAdapter.add(getResources().getString(R.string.personal_settings));
        mRowsAdapter.add(new ListRow(gridHeader, gridRowAdapter));

        int i;
        for (i = 1; i < NUM_ROWS; i++) {
            if (i != 0) {
                Collections.shuffle(list);
            }
            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);
            for (int j = 1; j < NUM_COLS; j++) {
                listRowAdapter.add(list.get(j % 5));
            }
            HeaderItem header = new HeaderItem(i, MovieList.MOVIE_CATEGORY[i]);
            mRowsAdapter.add(new ListRow(header, listRowAdapter));
        }



        setAdapter(mRowsAdapter);

    }
public class CardPresenter extends Presenter {
    private static final String TAG = "CardPresenter";

    private static int CARD_WIDTH = 360;
    private static int CARD_HEIGHT = 160;
    private static int sSelectedBackgroundColor;
    private static int sDefaultBackgroundColor;
    private Drawable mDefaultCardImage;
    private Activity mActivity;

    public CardPresenter(Activity activity){
        mActivity = activity;
    }

    public CardPresenter(){
     }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        Log.d(TAG, "onCreateViewHolder");

        sDefaultBackgroundColor = parent.getResources().getColor(R.color.default_background);
        sSelectedBackgroundColor = parent.getResources().getColor(R.color.selected_background);
        mDefaultCardImage = parent.getResources().getDrawable(R.drawable.movie);
/*
        ImageCardView cardView = new ImageCardView(parent.getContext()) {
            @Override
            public void setSelected(boolean selected) {
                updateCardBackgroundColor(this, selected);
                super.setSelected(selected);
            }
        };

        cardView.setFocusable(true);
        cardView.setFocusableInTouchMode(true);
        cardView
                .setBackgroundResource(R.drawable.gridview_cell_border);
        updateCardBackgroundColor(cardView, false);*/

        View view = mActivity.getLayoutInflater().inflate(R.layout.gridview_cell_rows, parent,
                false);
        LinearLayout linearLayout = (LinearLayout)view.findViewById(R.id.container_grid_view_item);
        linearLayout.setBackgroundResource(R.drawable.gridview_cell_border);

        view.setFocusable(true);

        ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;

     }

    private static void updateCardBackgroundColor(ImageCardView view, boolean selected) {
        int color = selected ? sSelectedBackgroundColor : sDefaultBackgroundColor;
        // Both background colors should be set because the view's background is temporarily visible
        // during animations.
        view.setBackgroundColor(color);
        view.findViewById(R.id.info_field).setBackgroundColor(color);
    }

    @Override
    public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
        Movie movie = (Movie) item;
        View cardView = (View) viewHolder.view;
        ImageView imageView = (ImageView)cardView.findViewById(R.id.imageView);
        LinearLayout linearLayout = (LinearLayout)cardView.findViewById(R.id.container_grid_view_item);
        linearLayout.setBackgroundResource(R.drawable.gridview_cell_border);
        Log.d(TAG, "onBindViewHolder");
        if (movie.getCardImageUrl() != null) {
           /* cardView.setTitleText(movie.getTitle());
            cardView.setContentText(movie.getStudio());
            cardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);*/
            Glide.with(viewHolder.view.getContext())
                    .load(movie.getCardImageUrl())
                    .centerCrop()
                    .error(mDefaultCardImage)
                    .into(imageView);
        }


    }

    @Override
    public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) {
        Log.d(TAG, "onUnbindViewHolder");
        View cardView = (View) viewHolder.view;
        // Remove references to images so that the garbage collector can free up memory

    }
所以对于第一行,我使用了CardPresenter,对于另一行,我使用了GridPresenter

我的要求是这种viewpager类型的东西应该每5秒钟自动旋转一次

因此,请帮助我如何设计此片段。

如中所述,如果您希望自定义片段之间的标题视图,请使用
演示者
并实现抽象方法来创建、绑定和解除绑定视图持有者。在显示目录浏览器的实现中,使用
setHeaderPresenterSelector()
方法为行标题设置presenter,或使用
setOnItemViewSelectedListener()
方法设置项目选择侦听器,如以下示例所示

setHeaderPresenterSelector(new PresenterSelector() {
    @Override
    public Presenter getPresenter(Object o) {
        return new IconHeaderItemPresenter();
    }
});
然后,使用
Timer
设置每个页面演示者的持续时间,如下所示


对于示例代码实现,这可能也有帮助。

将有助于youThanks@AnshulTyagi。我可以在android TV中使用此库吗?是的,我想会的。@AnshulTyagi因为在android TV中我们使用的是BrowseFragment,要求在滚动过程中将上面的crousel托盘滚动到顶部。@AnshulTyagi我们不能在android TV中使用此库。这是针对移动应用的。谢谢你的回答。。现在我使用的是BrowseFragment,第一行使用的是不同的Presenter。现在在这个演示者中,我使用的是ViewPager。同时,我在滚动上的效果与在BrowseFragment中的效果不一样。请建议这是正确的方法,还是我需要一些不同的方法来尝试。你能告诉我如何实现上述内容吗?@nityantagi,你能想出一个在Android Tv上实现旋转木马的解决方案吗。任何指针都会有很大帮助。@user1273299我能够像问题中附带的imgae一样嵌入第一行图像。但我无法为旋转木马提供自动滚动等功能。如果您需要任何帮助,请在skype nitin.ibt上ping我