1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License 15 */ 16 17package com.google.android.leanbackjank.presenter; 18 19import android.content.Context; 20import android.graphics.drawable.Drawable; 21import android.support.v17.leanback.widget.HeaderItem; 22import android.support.v17.leanback.widget.ListRow; 23import android.support.v17.leanback.widget.Presenter; 24import android.support.v17.leanback.widget.RowHeaderPresenter; 25import android.support.v4.content.res.ResourcesCompat; 26import android.view.LayoutInflater; 27import android.view.View; 28import android.view.ViewGroup; 29import android.widget.ImageView; 30import android.widget.TextView; 31 32import com.google.android.leanbackjank.R; 33 34public class HeaderItemPresenter extends RowHeaderPresenter { 35 private float mUnselectedAlpha; 36 37 @Override 38 public ViewHolder onCreateViewHolder(ViewGroup viewGroup) { 39 mUnselectedAlpha = viewGroup.getResources() 40 .getFraction(R.fraction.lb_browse_header_unselect_alpha, 1, 1); 41 LayoutInflater inflater = (LayoutInflater) viewGroup.getContext() 42 .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 43 44 View view = inflater.inflate(R.layout.header_item, null); 45 view.setAlpha(mUnselectedAlpha); // Initialize icons to be at half-opacity. 46 47 return new ViewHolder(view); 48 } 49 50 @Override 51 public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { 52 HeaderItem headerItem = ((ListRow) item).getHeaderItem(); 53 View rootView = viewHolder.view; 54 rootView.setFocusable(true); 55 56 ImageView iconView = (ImageView) rootView.findViewById(R.id.header_icon); 57 Drawable icon = ResourcesCompat.getDrawable( 58 rootView.getResources(), R.drawable.android_header, null); 59 iconView.setImageDrawable(icon); 60 61 TextView label = (TextView) rootView.findViewById(R.id.header_label); 62 label.setText(headerItem.getName()); 63 } 64 65 @Override 66 public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { 67 // no op 68 } 69 70 // TODO: This is a temporary fix. Remove me when leanback onCreateViewHolder no longer sets the 71 // mUnselectAlpha, and also assumes the xml inflation will return a RowHeaderView. 72 @Override 73 protected void onSelectLevelChanged(RowHeaderPresenter.ViewHolder holder) { 74 holder.view.setAlpha( 75 mUnselectedAlpha + holder.getSelectLevel() * (1.0f - mUnselectedAlpha)); 76 } 77} 78