Android Studio V3.12環(huán)境下TV開發(fā)教程(六)提供卡片視圖

Android Studio V3.12環(huán)境下TV開發(fā)教程

(轉(zhuǎn)自Android官網(wǎng)https://developer.android.com/training/tv/start)

文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80619656

提供卡片視圖

在上一課中罪裹,您創(chuàng)建了一個目錄瀏覽器,該瀏覽器在瀏覽片段中實施,顯示媒體項目列表量没。?在本課中降传,您將為媒體項目創(chuàng)建卡片視圖并將其顯示在瀏覽片段中舶治。

BaseCardView類和子類顯示與媒體項目關(guān)聯(lián)的元數(shù)據(jù)琼讽。?ImageCardView使用的ImageCardView類顯示內(nèi)容的圖像以及媒體項目的標題熔萧。

本課介紹來自Android Leanback示例應(yīng)用程序的代碼糖驴,可在GitHub上找到僚祷。?使用此示例代碼來啟動您自己的應(yīng)用程序。

圖1.選擇Leanback示例應(yīng)用程序圖像卡視圖贮缕。

創(chuàng)建一個卡片演示者

Presenter生成視圖并根據(jù)需要將對象綁定到它們辙谜。?在應(yīng)用程序向用戶展示其內(nèi)容的瀏覽片段中,您將為內(nèi)容卡創(chuàng)建一個Presenter并將其傳遞給將內(nèi)容添加到屏幕的適配器感昼。?在以下代碼中装哆,?CardPresenter在LoaderManageronLoadFinished()回調(diào)中創(chuàng)建。

@Overridepublic void onLoadFinished(Loader>> arg0,? ? ? ? ? ? ? ? ? ? ? ? ? ?HashMap> data) {? ? mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());? ? CardPresenter cardPresenter = new CardPresenter();? ? int i = 0;? ? for (Map.Entry> entry : data.entrySet()) {? ? ? ? ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(cardPresenter);? ? ? ? List list = entry.getValue();? ? ? ? for (int j = 0; j < list.size(); j++) {? ? ? ? ? ? listRowAdapter.add(list.get(j));? ? ? ? }? ? ? ? HeaderItem header = new HeaderItem(i, entry.getKey(), null);? ? ? ? i++;? ? ? ? mRowsAdapter.add(new ListRow(header, listRowAdapter));? ? }? ? HeaderItem gridHeader = new HeaderItem(i, getString(R.string.more_samples),? ? ? ? ? ? null);? ? GridItemPresenter gridPresenter = new GridItemPresenter();? ? ArrayObjectAdapter gridRowAdapter = new ArrayObjectAdapter(gridPresenter);? ? gridRowAdapter.add(getString(R.string.grid_view));? ? gridRowAdapter.add(getString(R.string.error_fragment));? ? gridRowAdapter.add(getString(R.string.personal_settings));? ? mRowsAdapter.add(new ListRow(gridHeader, gridRowAdapter));? ? setAdapter(mRowsAdapter);? ? updateRecommendations();}

創(chuàng)建一個卡片視圖

在此步驟中定嗓,您使用卡片視圖的視圖持有人構(gòu)建卡片演示者蜕琴,以描述您的媒體內(nèi)容項目。?請注意宵溅,每個演示者只能創(chuàng)建一個視圖類型凌简。?如果您有兩種不同的卡片視圖類型,則需要兩個不同的卡片演示者恃逻。

Presenter?雏搂,實現(xiàn)一個onCreateViewHolder()回調(diào),該回調(diào)創(chuàng)建一個可用于顯示內(nèi)容項的視圖持有者寇损。

@Overridepublic class CardPresenter extends Presenter {? ? private Context mContext;? ? private static int CARD_WIDTH = 313;? ? private static int CARD_HEIGHT = 176;? ? private Drawable mDefaultCardImage;? ? @Override? ? public ViewHolder onCreateViewHolder(ViewGroup parent) {? ? ? ? mContext = parent.getContext();? ? ? ? mDefaultCardImage = mContext.getResources().getDrawable(R.drawable.movie);...

onCreateViewHolder()方法中畔派,為內(nèi)容項目創(chuàng)建一個卡片視圖。?以下示例使用ImageCardView?润绵。

選擇卡時,默認行為會將其展開為較大的尺寸胞谈。?如果您想為選定的卡指定不同的顏色尘盼,請按此處所示調(diào)用setSelected()?。

...? ? ImageCardView cardView = new ImageCardView(mContext) {? ? ? ? @Override? ? ? ? public void setSelected(boolean selected) {? ? ? ? ? ? int selected_background = mContext.getResources().getColor(R.color.detail_background);? ? ? ? ? ? int default_background = mContext.getResources().getColor(R.color.default_background);? ? ? ? ? ? int color = selected ? selected_background : default_background;? ? ? ? ? ? findViewById(R.id.info_field).setBackgroundColor(color);? ? ? ? ? ? super.setSelected(selected);? ? ? ? }? ? };...

當用戶打開您的應(yīng)用程序時烦绳,?Presenter.ViewHolder會顯示您的內(nèi)容項目的CardView對象卿捎。?您需要設(shè)置這些以通過調(diào)用setFocusable(true)setFocusableInTouchMode(true)從D-pad控制器接收焦點。

...? ? cardView.setFocusable(true);? ? cardView.setFocusableInTouchMode(true);? ? return new ViewHolder(cardView);}

當用戶選擇ImageCardView?径密,它會展開以顯示您指定背景顏色的文本區(qū)域午阵,如圖1所示。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末享扔,一起剝皮案震驚了整個濱河市底桂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惧眠,老刑警劉巖籽懦,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氛魁,居然都是意外死亡暮顺,警方通過查閱死者的電腦和手機厅篓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捶码,“玉大人羽氮,你說我怎么就攤上這事”鼓眨” “怎么了档押?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尤筐。 經(jīng)常有香客問我汇荐,道長,這世上最難降的妖魔是什么盆繁? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任掀淘,我火速辦了婚禮,結(jié)果婚禮上油昂,老公的妹妹穿的比我還像新娘革娄。我一直安慰自己,他們只是感情好冕碟,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布拦惋。 她就那樣靜靜地躺著,像睡著了一般安寺。 火紅的嫁衣襯著肌膚如雪厕妖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天挑庶,我揣著相機與錄音言秸,去河邊找鬼。 笑死迎捺,一個胖子當著我的面吹牛举畸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凳枝,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼抄沮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岖瑰?” 一聲冷哼從身側(cè)響起叛买,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蹋订,沒想到半個月后聪全,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡辅辩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年难礼,在試婚紗的時候發(fā)現(xiàn)自己被綠了娃圆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡蛾茉,死狀恐怖讼呢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谦炬,我是刑警寧澤悦屏,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站键思,受9級特大地震影響础爬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吼鳞,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一看蚜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赔桌,春花似錦供炎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浑度。三九已至诡延,卻和暖如春抑胎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹洗。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工蜓氨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人队伟。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像幽勒,于是被迫代替她去往敵國和親嗜侮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容