14fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri/* 24fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * Copyright (C) 2016 The Android Open Source Project 34fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * 44fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 54fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * in compliance with the License. You may obtain a copy of the License at 64fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * 74fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * http://www.apache.org/licenses/LICENSE-2.0 84fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * 94fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * Unless required by applicable law or agreed to in writing, software distributed under the License 104fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 114fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * or implied. See the License for the specific language governing permissions and limitations under 124fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * the License. 134fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri */ 144fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiripackage android.support.v17.leanback.widget; 154fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 164fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.content.Context; 174fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.graphics.Canvas; 184fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.graphics.Paint; 194fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.graphics.RectF; 204fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.util.AttributeSet; 214fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.view.View; 224fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriimport android.support.v17.leanback.R; 234fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 244fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri/** 254fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * Creates a view for a media item row in a playlist 261dcc356c7c60f493010d69ded3d8e8f92f54217dKeyvan Amiri * @hide 274fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri */ 284fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriclass MediaRowFocusView extends View { 294fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 304fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri private final Paint mPaint; 314fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri private final RectF mRoundRectF = new RectF(); 324fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri private int mRoundRectRadius; 334fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 344fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri public MediaRowFocusView(Context context) { 354fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri super(context); 364fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri mPaint = createPaint(context); 374fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 384fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 394fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri public MediaRowFocusView(Context context, AttributeSet attrs) { 404fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri super(context, attrs); 414fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri mPaint = createPaint(context); 424fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 434fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 444fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri public MediaRowFocusView(Context context, AttributeSet attrs, int defStyleAttr) { 454fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri super(context, attrs, defStyleAttr); 464fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri mPaint = createPaint(context); 474fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 484fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 494fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri @Override 504fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri protected void onDraw(Canvas canvas) { 514fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri super.onDraw(canvas); 524fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri mRoundRectRadius = getHeight() / 2; 534fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri int drawHeight = 2 * mRoundRectRadius; 544fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri int drawOffset = (drawHeight - getHeight()) / 2; 554fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri mRoundRectF.set(0, -drawOffset, getWidth(), getHeight() + drawOffset); 564fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri canvas.drawRoundRect(mRoundRectF, mRoundRectRadius, mRoundRectRadius, mPaint); 574fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 584fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 594fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri private Paint createPaint(Context context) { 604fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri Paint paint = new Paint(); 614fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri paint.setColor(context.getResources().getColor( 624fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri R.color.lb_playback_media_row_highlight_color)); 634fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri return paint; 644fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 654fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri 664fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri public int getRoundRectRadius() { 674fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri return mRoundRectRadius; 684fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri } 694fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri}