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.view.LayoutInflater; 22import android.view.View; 23import android.view.ViewGroup; 24import android.widget.ImageView; 25import android.widget.TextView; 26 27import androidx.core.content.res.ResourcesCompat; 28import androidx.leanback.widget.HeaderItem; 29import androidx.leanback.widget.ListRow; 30import androidx.leanback.widget.Presenter; 31import androidx.leanback.widget.RowHeaderPresenter; 32 33import com.google.android.leanbackjank.R; 34 35public class HeaderItemPresenter extends RowHeaderPresenter { 36 private float mUnselectedAlpha; 37 38 @Override 39 public ViewHolder onCreateViewHolder(ViewGroup viewGroup) { 40 mUnselectedAlpha = viewGroup.getResources() 41 .getFraction(R.fraction.lb_browse_header_unselect_alpha, 1, 1); 42 LayoutInflater inflater = (LayoutInflater) viewGroup.getContext() 43 .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 44 45 View view = inflater.inflate(R.layout.header_item, null); 46 view.setAlpha(mUnselectedAlpha); // Initialize icons to be at half-opacity. 47 48 return new ViewHolder(view); 49 } 50 51 @Override 52 public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { 53 HeaderItem headerItem = ((ListRow) item).getHeaderItem(); 54 View rootView = viewHolder.view; 55 rootView.setFocusable(true); 56 57 ImageView iconView = (ImageView) rootView.findViewById(R.id.header_icon); 58 Drawable icon = ResourcesCompat.getDrawable( 59 rootView.getResources(), R.drawable.android_header, null); 60 iconView.setImageDrawable(icon); 61 62 TextView label = (TextView) rootView.findViewById(R.id.header_label); 63 label.setText(headerItem.getName()); 64 } 65 66 @Override 67 public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { 68 // no op 69 } 70 71 // TODO: This is a temporary fix. Remove me when leanback onCreateViewHolder no longer sets the 72 // mUnselectAlpha, and also assumes the xml inflation will return a RowHeaderView. 73 @Override 74 protected void onSelectLevelChanged(RowHeaderPresenter.ViewHolder holder) { 75 holder.view.setAlpha( 76 mUnselectedAlpha + holder.getSelectLevel() * (1.0f - mUnselectedAlpha)); 77 } 78} 79