当前位置: 首页 > news >正文

百度网站介绍浪琴女士手表网站

百度网站介绍,浪琴女士手表网站,企业网站需要响应式,网站开发开发小游戏吗自定义label组件 支持边框绘制 支持shape背景(按指定圆角裁剪,矩形,圆角矩,圆形),支持指定角圆角 支持自定义阴影(颜色,偏移,深度) 边框颜色支持状态选择器 预览 核心绘制辅助类 public class LabelHelper {private final Paint paint;private Paint shadowPaint;private fina…自定义label组件 支持边框绘制 支持shape背景(按指定圆角裁剪,矩形,圆角矩,圆形),支持指定角圆角 支持自定义阴影(颜色,偏移,深度) 边框颜色支持状态选择器 预览 核心绘制辅助类 public class LabelHelper {private final Paint paint;private Paint shadowPaint;private final float[] radiusList new float[8];// 矩阵四角圆角 两个一组分别为一角的x轴半径y轴半径 四组分别为 上左 上右 下右 下左private final Rect rect;private final Path path;private final RectF rectF;private float strokeWidth;private ColorStateList strokeColor;private boolean hasRadius;//是否有圆角private int shadowColor;//是否有阴影private float shadowRadius;private float shadowDx;private float shadowDy;private Float contentInsetLeft null;private Float contentInsetRight null;private int defStrokeColor;LabelHelper(View view, Context context, AttributeSet attrs) {this(view, context, attrs, Color.TRANSPARENT);}LabelHelper(View view, Context context, AttributeSet attrs, ColorInt int defStrokeColor) {this.defStrokeColor defStrokeColor;TypedArray array context.obtainStyledAttributes(attrs, R.styleable.LabelView);// 圆角float radius array.getDimension(R.styleable.LabelView_android_radius, 0);float topLeftRadius array.getDimension(R.styleable.LabelView_android_topLeftRadius, radius);float topRightRadius array.getDimension(R.styleable.LabelView_android_topRightRadius, radius);float bottomLeftRadius array.getDimension(R.styleable.LabelView_android_bottomLeftRadius, radius);float bottomRightRadius array.getDimension(R.styleable.LabelView_android_bottomRightRadius, radius);// 阴影int shadowColor array.getColor(R.styleable.LabelView_android_shadowColor, Color.TRANSPARENT);float shadowRadius array.getFloat(R.styleable.LabelView_android_shadowRadius, 0.0f);float shadowDx array.getFloat(R.styleable.LabelView_android_shadowDx, 0.0f);float shadowDy array.getFloat(R.styleable.LabelView_android_shadowDy, 0.0f);if (array.hasValue(R.styleable.LabelView_android_contentInsetLeft)) {contentInsetLeft array.getDimension(R.styleable.LabelView_android_contentInsetLeft, 0);}if (array.hasValue(R.styleable.LabelView_android_contentInsetRight)) {contentInsetRight array.getDimension(R.styleable.LabelView_android_contentInsetRight, 0);}int anInt array.getInt(R.styleable.LabelView_fillType, 1);// 边框strokeWidth array.getDimension(R.styleable.LabelView_borderWidth, 0);try {strokeColor array.getColorStateList(R.styleable.LabelView_borderColor);} catch (Exception e) {e.printStackTrace();}if (strokeColor null) {strokeColor ColorStateList.valueOf(array.getColor(R.styleable.LabelView_borderColor, this.defStrokeColor));}view.setSelected(array.getBoolean(R.styleable.LabelView_selected, false));array.recycle();paint new Paint();paint.setAntiAlias(true);paint.setStyle(getPaintStyle(anInt));paint.setStrokeWidth(strokeWidth);rectF new RectF();rect new Rect();path new Path();setRadiusPx(view, topLeftRadius, topRightRadius, bottomRightRadius, bottomLeftRadius);view.setLayerType(LAYER_TYPE_HARDWARE, null);setShadow(shadowColor, shadowRadius, shadowDx, shadowDy);}// 设置阴影画笔private void setShadow(int shadowColor, float shadowRadius, float shadowDx, float shadowDy) {if (shadowPaint null) {shadowPaint new Paint();shadowPaint.setAntiAlias(true);shadowPaint.setStyle(Paint.Style.FILL);}this.shadowRadius Math.max(shadowRadius, 0);this.shadowDx shadowDx;this.shadowDy shadowDy;this.shadowColor shadowColor;shadowPaint.setColor(shadowColor);shadowPaint.setShadowLayer(this.shadowRadius, this.shadowDx, this.shadowDy, shadowColor);}private Paint.Style getPaintStyle(int type) {return switch (type) {case 0 - Paint.Style.FILL;case 2 - Paint.Style.FILL_AND_STROKE;default - Paint.Style.STROKE;};}void setStrokeWidth(int dp) {strokeWidth SizeUtils.dp2px(dp);paint.setStrokeWidth(strokeWidth);}void setStrokeColor(ColorInt int boundColor) {this.strokeColor ColorStateList.valueOf(boundColor);}void setFillType(Paint.Style style) {paint.setStyle(style);}void setRadiusPx(View view, float topLeft, float topRight, float bottomRight, float bottomLeft) {radiusList[0] topLeft;radiusList[1] topLeft;radiusList[2] topRight;radiusList[3] topRight;radiusList[4] bottomRight;radiusList[5] bottomRight;radiusList[6] bottomLeft;radiusList[7] bottomLeft;hasRadius topLeft 0 || topRight 0 || bottomRight 0 || bottomLeft 0;float offsetPaddingL 0;float offsetPaddingR 0;float offsetPaddingT 0;float offsetPaddingB 0;boolean autoInsetLeft contentInsetLeft null;boolean autoInsetRight contentInsetRight null;if (hasRadius) {if (autoInsetLeft) {offsetPaddingL Math.max(topLeft, bottomLeft) / 2f;} else if (contentInsetLeft ! 0) {offsetPaddingL contentInsetLeft;}if (autoInsetRight) {offsetPaddingR Math.max(topRight, bottomRight) / 2f;} else if (contentInsetRight ! 0) {offsetPaddingR contentInsetRight;}}if (isDrawBorder(view)) {offsetPaddingL Math.max(offsetPaddingL, strokeWidth);offsetPaddingR Math.max(offsetPaddingL, strokeWidth);offsetPaddingT strokeWidth;offsetPaddingB strokeWidth;}view.setPadding((int) Math.max(view.getPaddingLeft(), offsetPaddingL),(int) Math.max(view.getPaddingTop(), offsetPaddingT),(int) Math.max(view.getPaddingRight(), offsetPaddingR),(int) Math.max(view.getPaddingBottom(), offsetPaddingB));setStroke();view.invalidate();}private void setStroke() {if (hasRadius) {paint.setStrokeCap(Paint.Cap.ROUND);paint.setStrokeJoin(Paint.Join.ROUND);} else {paint.setStrokeCap(Paint.Cap.BUTT);paint.setStrokeJoin(Paint.Join.MITER);}}void draw(Canvas canvas, View view) {boolean drawBorder isDrawBorder(view);boolean isDrawShadow isDrawShadow();if (hasRadius || drawBorder || isDrawShadow) {view.getDrawingRect(rect);path.reset();rectF.set(rect);path.addRoundRect(rectF, radiusList, Path.Direction.CW);path.close();if (isDrawShadow) {// 绘制阴影canvas.drawPath(path, shadowPaint);path.reset();rectF.left Math.max(shadowRadius - shadowDx, 0);rectF.right - Math.max(shadowRadius shadowDx, 0);rectF.top Math.max(shadowRadius - shadowDy, 0);rectF.bottom - Math.max(shadowRadius shadowDy, 0);path.addRoundRect(rectF, radiusList, Path.Direction.CW);path.close();}if (hasRadius !(drawBorder paint.getStyle() ! Paint.Style.STROKE)) {// 形状裁剪canvas.clipPath(path);}}}void onDraw(Canvas canvas, View view) {if (isDrawBorder(view)) {Paint.Style style paint.getStyle();if (style ! Paint.Style.STROKE) {canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);}paint.setColor(getBoundColor(view));canvas.save();if (style ! Paint.Style.FILL) {path.reset();rectF.left (strokeWidth / 2f - 0.5f);rectF.top (strokeWidth / 2f - 0.5f);rectF.right - strokeWidth / 2f;rectF.bottom - strokeWidth / 2f;path.addRoundRect(rectF, radiusList, Path.Direction.CW);path.close();}// 边框绘制canvas.drawPath(path, paint);canvas.restore();}}Paint getPaint() {return paint;}public Rect getRect() {return rect;}public Path getPath() {return path;}public RectF getRectF() {return rectF;}public float getStrokeWidth() {return strokeWidth;}public boolean isHasRadius() {return hasRadius;}private int getBoundColor(View view) {int color this.defStrokeColor;if (strokeColor ! null) {if (strokeColor.isStateful()) {color strokeColor.getColorForState(view.getDrawableState(), strokeColor.getDefaultColor());} else {color strokeColor.getDefaultColor();}}return color;}private boolean isDrawBorder(View view) {return strokeWidth 0 getBoundColor(view) ! Color.TRANSPARENT;}private boolean isDrawShadow() {return shadowPaint ! null shadowColor ! Color.TRANSPARENT shadowRadius 0;} } 自定义控件示例 public class LabelFrameLayout extends FrameLayout {private LabelHelper helper;public LabelFrameLayout(Context context) {this(context, null);}public LabelFrameLayout(Context context, AttributeSet attrs) {this(context, attrs, 0);}public LabelFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);setWillNotDraw(false);helper new LabelHelper(this, context, attrs);}public void setFillType(Paint.Style style) {if (helper ! null helper.getPaint() ! null) {helper.setFillType(style);invalidate();}}public void setStrokeColor(ColorInt int boundColor) {if (helper ! null) {helper.setStrokeColor(boundColor);invalidate();}}public void setStrokeColorRes(ColorRes int colorRes) {if (helper ! null) {helper.setStrokeColor(getResources().getColor(colorRes));invalidate();}}public void setStrokeWidth(int dp) {if (helper ! null helper.getPaint() ! null) {helper.setStrokeWidth(dp);invalidate();}}public void setRadius(int radiusDp) {setRadiusPx(SizeUtils.dp2px(radiusDp));}public void setRadiusPx(float radius) {setRadiusPx(radius, radius, radius, radius);}public void setRadius(float topLeft, float topRight, float bottomRight, float bottomLeft) {setRadiusPx(SizeUtils.dp2px(topLeft), SizeUtils.dp2px(topRight), SizeUtils.dp2px(bottomRight), SizeUtils.dp2px(bottomLeft));}public void setRadiusPx(float topLeft, float topRight, float bottomRight, float bottomLeft) {if (helper ! null) {helper.setRadiusPx(this, topLeft, topRight, bottomRight, bottomLeft);}}Overridepublic void invalidate() {if (isLaidOut()) {super.invalidate();}}Overridepublic void draw(Canvas canvas) {if (helper ! null) {helper.draw(canvas, this);}super.draw(canvas);}Overrideprotected void onDraw(Canvas canvas) {if (helper ! null) {helper.onDraw(canvas, this);}super.onDraw(canvas);} }xml使用示例 包名.LabelFrameLayoutandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginLeft100dpandroid:layout_marginBottom10dpandroid:backgroundcolor/subColorGrayapp:borderColorcolor/redapp:borderWidth1dpandroid:radius20dpTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text阿迪斯发斯蒂芬 //包名.LabelFrameLayout
http://wiki.neutronadmin.com/news/119867/

相关文章:

  • 做网站一个月可以赚多少钱阿里云个人域名备案流程
  • 网站开发案例教程威海建设局网站首页
  • 做网赌需要在哪些网站投广告销售推广方案
  • 公司网站建设 上海做鱼网站的域名
  • 佛山网站设计制作公司打开网页wordpress错误
  • 电子商务网站建设试验报告1外网不能访问wordpress
  • 如何做视频播放网站上热门的短视频素材
  • 形容网站做的好网站程序有哪些
  • 怎么把网站设置为信任网站查域名注册详细信息查询
  • 网站快速网站推广网址大全名称
  • 番禺人才网站电子产品展示网站
  • 网站建设需要哪些步骤 谢谢企业网站的设计风格
  • 赣州市网站建设wordpress配置文件
  • wordpress能做大站吗成都医疗网站建设
  • 用网站做宣传的方案建设一网站要多少钱
  • asp网站实现php栏目免费访问国外网站的app
  • 阿里 做网站seo排名优化公司
  • 网站分析培训班陕西服装网站建设
  • 可以做行程的网站黄骅市职教中心
  • 石林网站建设企业在网站推广
  • 网站建设外包 源代码福州网站设计十年乐云seo
  • 网站官网设计规范建设部促进中心网站
  • 软件开发周期包括哪几个阶段北京seo的排名优化
  • 动漫网站网页设计网站seo排名
  • 企业网站建设的重要性和必要性中国flash网站模板中心
  • 哪些网站做的好济宁建设信息网官网
  • 如何做网站帮别人赚钱水土保持与生态建设网站
  • 成都 企业 网站制作云南5个中风险地区
  • 新营销平台电商网站做暖暖视频网站大全
  • 做外贸哪些网站可以发布产品物联网平台排名