Android自定义控件:带你掌握一款多特效的智能loadingView

本文详细介绍了如何在Android中创建一个自定义控件,特别是实现了一个具备文字滚动和动画效果的智能LoadingView。通过覆盖onMeasure方法测量控件大小,自定义文字绘制和动画逻辑,并提供了获取布局属性、设置点击事件和动画讲解,是Android自定义控件学习的好材料。
摘要由CSDN通过智能技术生成

上面是画圆角,那width和height怎么来呢当然是通过onMeasure;

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

height = measuredHeight(heightMeasureSpec); //这里是测量控件大小

width = measureWidth(widthMeasureSpec); //我们经常可以看到我们设置控件wrap_content,match_content或者固定值

setMeasuredDimension(width, height);

}

下面以measureWidth为例:

private int measureWidth(int widthMeasureSpec) {

int result;

int specMode = MeasureSpec.getMode(widthMeasureSpec);

int specSize = MeasureSpec.getSize(widthMeasureSpec);

//这里是精准模式,比如match_content,或者是你控件里写明了控件大小

if (specMode == MeasureSpec.EXACTLY) {

result = specSize;

} else {

//这里是wrap_content模式,其实这里就是给一个默认值

//下面这段注销代码是最开始如果用户不设置大小,给他一个默认固定值。这里以字体长度来决定更合理

//result = (int) getContext().getResources().getDimension(R.dimen.dp_150);

//这里是我设置的长度,当然你写自定义控件可以设置你想要的逻辑,根据你的实际情况

result = buttonString.length() * textSize + height * 5 / 3;

if (specMode == MeasureSpec.AT_MOST) {

result = Math.min(result, specSize);

}

}

return result;

}

3、【绘制文字text】

这里我是用自己的方式实现:当文字长度超过控件长度时,文字需要来回滚动。所以自定义控件因为你需要什么样的功能可以自己去实现(当然这个方法也是在onDraw里,为什么这么个顺序讲,目的希望我希望你能循序渐进的理解,如果你觉得onDraw方代码太杂,你可以用个方法独立出去,你可以跟作者一样用private void drawText(Canvas canvas) {}), //绘制文字的路径(文字过长时,文字来回滚动需要用到)

private Path textPath = new Path():

textRect.left = 0;

textRect.top = 0;

textRect.right = width;

textRect.bottom = height; //这里确定文字绘制区域,其实就是控件区域

Paint.FontMetricsInt fontMetrics = textPaint.getFontMetr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值