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 */
14ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.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 Amiri
238619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.annotation.RestrictTo;
248619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.leanback.R;
258619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas
264fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri/**
274fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri * Creates a view for a media item row in a playlist
281dcc356c7c60f493010d69ded3d8e8f92f54217dKeyvan Amiri * @hide
294fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri */
3004c9e28ea0be0cedcee58e4d29343ac08733d58aAurimas Liutikas@RestrictTo(RestrictTo.Scope.LIBRARY)
314fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiriclass MediaRowFocusView extends View {
324fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
334fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private final Paint mPaint;
344fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private final RectF mRoundRectF = new RectF();
354fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private int mRoundRectRadius;
364fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
374fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context) {
384fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context);
394fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
404fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
414fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
424fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context, AttributeSet attrs) {
434fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context, attrs);
444fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
454fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
464fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
474fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public MediaRowFocusView(Context context, AttributeSet attrs, int defStyleAttr) {
484fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super(context, attrs, defStyleAttr);
494fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mPaint = createPaint(context);
504fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
514fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
524fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    @Override
534fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    protected void onDraw(Canvas canvas) {
544fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        super.onDraw(canvas);
554fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mRoundRectRadius = getHeight() / 2;
564fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        int drawHeight = 2 * mRoundRectRadius;
574fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        int drawOffset = (drawHeight - getHeight()) / 2;
584fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        mRoundRectF.set(0, -drawOffset, getWidth(), getHeight() + drawOffset);
594fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        canvas.drawRoundRect(mRoundRectF, mRoundRectRadius, mRoundRectRadius, mPaint);
604fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
614fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
624fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    private Paint createPaint(Context context) {
634fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        Paint paint = new Paint();
644fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        paint.setColor(context.getResources().getColor(
654fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri                R.color.lb_playback_media_row_highlight_color));
664fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        return paint;
674fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
684fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri
694fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    public int getRoundRectRadius() {
704fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri        return mRoundRectRadius;
714fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri    }
724fe538f2d65eefc57f618887ccb1226ec1a9741dKeyvan Amiri}