我是Android TV中的新手。請看下面的附圖。ViewPager喜歡AndroidTV中BrowseFragment的東西
在這幅畫的頂部有一個crousel,所有的紅色標記的區域是圖像。
我想在Android TV中製作此屏幕。我爲此使用了BrowseFragment。第一排使用兩臺Presenter,另一排使用另一臺Presenter。
我所使用的代碼:
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);
}
CardPresenter.java
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
}
因此,對於第一行i已經使用CardPresenter以及用於其它我已經使用GridPresenter。
我的要求是這個viewpager類型的東西應該每5秒自動旋轉一次。
所以請幫我我怎麼設計這個片段。
https://github.com/sayyam/carouselview會幫到你 –
謝謝@AnshulTyagi。我可以在android電視中使用這個庫嗎? –
是的,我認爲會的。 –