您的位置:首页 > 汽车 > 时评 > 网站建设seo运营规划_机械加工网红订单_优化搜索点击次数的方法_如何提高网站排名的方法

网站建设seo运营规划_机械加工网红订单_优化搜索点击次数的方法_如何提高网站排名的方法

2025/2/23 0:37:27 来源:https://blog.csdn.net/zhijiandedaima/article/details/144549756  浏览:    关键词:网站建设seo运营规划_机械加工网红订单_优化搜索点击次数的方法_如何提高网站排名的方法
网站建设seo运营规划_机械加工网红订单_优化搜索点击次数的方法_如何提高网站排名的方法

Tips:Android,蓝牙搜索设备,水波纹效果

效果图:

在这里插入图片描述

源码:

public class RippleAnimationView extends RelativeLayout {private Paint mPaint;public static final int STROKE_WIDTH = 5;List<View> views = new ArrayList<>();private boolean animationRunning = false;public RippleAnimationView(Context context) {super(context);}public RippleAnimationView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init(context, attrs);}private void init(Context context, AttributeSet attrs) {mPaint = new Paint();mPaint.setAntiAlias(true);//抗锯齿int radius = (int) context.getResources().getDimension(com.kl.common.R.dimen.dp_150);//初始大小int rippleColor = ContextCompat.getColor(context, R.color.rippleColor);mPaint.setStrokeWidth(STROKE_WIDTH);mPaint.setStyle(Paint.Style.FILL);mPaint.setColor(rippleColor);//        延迟时间int rippleDuration = 3500;int singleDelay = rippleDuration / 4;//间隔时间 (上一个波纹  和下一个波纹的)RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(radius + STROKE_WIDTH, radius + STROKE_WIDTH);params.addRule(CENTER_IN_PARENT);for (int i = 0; i < 4; i++) {RippleCircleView rippleCircleView = new RippleCircleView(this);addView(rippleCircleView, params);views.add(rippleCircleView);PropertyValuesHolder aplhaHolder = PropertyValuesHolder.ofFloat("Alpha", 1, 0);PropertyValuesHolder scaleXHolder = PropertyValuesHolder.ofFloat("scaleX", 2);PropertyValuesHolder scaleYHolder = PropertyValuesHolder.ofFloat("scaleY", 2);ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(rippleCircleView, aplhaHolder, scaleXHolder, scaleYHolder);animator.setDuration(rippleDuration);animator.setStartDelay(i * singleDelay);animator.setRepeatMode(ObjectAnimator.RESTART);animator.setRepeatCount(ObjectAnimator.INFINITE);rippleCircleView.setTag(animator);}}/*** 启动动画*/public void startRippleAnimation() {if (!animationRunning) {for (View rippleView : views) {rippleView.setVisibility(VISIBLE);((ObjectAnimator) rippleView.getTag()).start();}animationRunning = true;}}/*** 停止动画*/public void stopRippleAnimation() {if (animationRunning) {Collections.reverse(views);for (View rippleView : views) {rippleView.setVisibility(INVISIBLE);((ObjectAnimator) rippleView.getTag()).end();((ObjectAnimator) rippleView.getTag()).cancel();}animationRunning = false;}}public boolean isAnimationRunning() {return animationRunning;}public Paint getPaint() {return mPaint;}
}
public class RippleCircleView extends View {private RippleAnimationView mRippleAnimationView;public RippleCircleView(RippleAnimationView rippleAnimationView) {super(rippleAnimationView.getContext());mRippleAnimationView = rippleAnimationView;}public RippleCircleView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);float radius = (float) Math.min(getWidth(), getHeight()) / 2;canvas.drawCircle(radius, radius, radius - RippleAnimationView.STROKE_WIDTH, mRippleAnimationView.getPaint());}
}

使用:

    <com.kl.analyze.view.RippleAnimationViewandroid:id="@+id/ripple_view"android:layout_width="@dimen/dp_335"android:layout_height="@dimen/dp_335"android:layout_centerHorizontal="true"android:layout_marginTop="@dimen/dp_100"><ImageViewandroid:id="@+id/iv_bluetooth"android:layout_width="@dimen/dp_150"android:layout_height="@dimen/dp_150"android:layout_centerInParent="true"android:src="@drawable/ic_search_bluetooth"/></com.kl.analyze.view.RippleAnimationView>
    /*** 开始旋转动画*/private fun startRotateAnim() {rippleView.startRippleAnimation()}/*** 停止动画*/private fun stopRotateAnim() {rippleView.stopRippleAnimation()}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com