package com.jaouan.compoundlayout; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Canvas; import android.graphics.Path; import android.os.Build; import android.util.AttributeSet; /** * Circle gradient radio layout. */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public class CircleGradientRadioLayout extends GradientRadioLayout { /** * Draw path. */ private Path mPath; public CircleGradientRadioLayout(Context context) { this(context, null); } public CircleGradientRadioLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CircleGradientRadioLayout(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs, defStyleAttr, 0); } public CircleGradientRadioLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); // - Defines rounded background. setBackgroundResource(R.drawable.rounded); } @Override public void draw(Canvas canvas) { canvas.save(); canvas.clipPath(mPath); super.draw(canvas); canvas.restore(); } @Override protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) { super.onSizeChanged(width, height, oldWidth, oldHeight); mPath = new Path(); mPath.addOval(0, 0, width, height, Path.Direction.CW); mPath.close(); } }
CircleGradientRadioLayout
最新推荐文章于 2024-01-16 13:37:50 发布
本文介绍了一种基于Android的CircleGradientRadioLayout自定义视图组件的实现方式,该组件能够创建圆形背景并应用渐变效果。文章详细展示了如何通过继承GradientRadioLayout并使用Path对象来定义圆形边界,同时介绍了如何在视图大小改变时更新路径,以及如何在绘制过程中裁剪超出圆形边界的元素。
1030

被折叠的 条评论
为什么被折叠?



