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
264fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri */
274fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriclass MediaRowFocusView extends View {
284fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
294fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private final Paint mPaint;
304fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private final RectF mRoundRectF = new RectF();
314fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private int mRoundRectRadius;
324fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
334fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context) {
344fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context);
354fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
364fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
374fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
384fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context, AttributeSet attrs) {
394fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context, attrs);
404fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
414fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
424fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
434fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context, AttributeSet attrs, int defStyleAttr) {
444fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context, attrs, defStyleAttr);
454fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
464fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
474fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
484fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    @Override
494fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    protected void onDraw(Canvas canvas) {
504fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super.onDraw(canvas);
514fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mRoundRectRadius = getHeight() / 2;
524fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        int drawHeight = 2 * mRoundRectRadius;
534fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        int drawOffset = (drawHeight - getHeight()) / 2;
544fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mRoundRectF.set(0, -drawOffset, getWidth(), getHeight() + drawOffset);
554fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        canvas.drawRoundRect(mRoundRectF, mRoundRectRadius, mRoundRectRadius, mPaint);
564fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
574fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
584fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private Paint createPaint(Context context) {
594fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        Paint paint = new Paint();
604fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        paint.setColor(context.getResources().getColor(
614fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri                R.color.lb_playback_media_row_highlight_color));
624fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        return paint;
634fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
644fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
654fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public int getRoundRectRadius() {
664fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        return mRoundRectRadius;
674fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
684fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri}