Android代码实现控件闪烁效果

你的名字 2022-05-12 06:36 442阅读 0赞

代码地址如下:
http://www.demodashi.com/demo/13162.html

前言

在项目开发过程中,我们有时会遇到需要控件闪烁和停止的问题,这个用xml是可以实现的,但是为了在使用时控制方便,这里我写了一个工具类,方便在代码中控制view的闪烁与停止。

本文将涉及以下类容

  1. 闪烁实现原理
  2. 在MainActivity中的使用
  3. 效果图和项目结构图

实现过程

下面作以讲解

一.闪烁实现原理

闪烁是通过android中的动画类Animation实现的,
我在实现view闪烁动画的时候,涉及到Animation的 以下方法:

  1. 1. alphaAnimation.setInterpolator(new LinearInterpolator());

这是给动画设置插值器,默认线性插值器

要实现闪烁的话,就是一个重复的过程,于是Animation需要设置重复次数,因为是点击开始在结束之前不停止的,所以会一直重复,则设置重复次数如下:

  1. alphaAnimation.setRepeatCount(Animation.INFINITE);

最后在设置完动画的model后启动动画:

  1. alphaAnimation.setRepeatMode(Animation.REVERSE); view.startAnimation(alphaAnimation);

这样一个不断闪烁的动画便完成了,接下来是停止闪烁动画,Animation 有一个类似clear的方法,可以清除加在view上的而动画效果,停止闪烁动画的话,则需要这样:

  1. view.clearAnimation();

当然,以上便是Animation实现动画实现view闪烁与停止的原理,这些只要理解就好,你不需要为怎么调用烦恼,因为我将view动画闪烁及停止的方法封装到demo中的FlashHelper中

FlashHelper类有两个公开方法,开始闪烁与停止闪烁。如果你想让你的view闪烁起来,你可以这样:

  1. //开启闪烁,其中mTvText为view对象
  2. FlashHelper.getInstance().startFlick(mTvText);

若想要闪烁的view停止下来,你可以这样:

  1. //停止闪烁,其中mTvText为view对象
  2. FlashHelper.getInstance().stopFlick(mTvText);

下面看看FlashHelper在MainActivity中是如何调用的吧.

二.在MainActivity中的使用

FlashHelper在MainActivity中使用样例如下:

  1. package com.android.testdemo;
  2. import android.view.View;
  3. import android.widget.Button;
  4. import android.widget.TextView;
  5. import com.android.base.BaseActivity;
  6. import butterknife.BindView;
  7. public class MainActivity extends BaseActivity {
  8. @BindView(R.id.button1)
  9. Button mBtn1;
  10. @BindView(R.id.button2)
  11. Button mBtn2;
  12. @BindView(R.id.tv_text)
  13. TextView mTvText;
  14. @Override
  15. protected int getContentViewId() {
  16. return R.layout.activity_main;
  17. }
  18. @Override
  19. protected void initView() {
  20. }
  21. @Override
  22. protected void initData() {
  23. }
  24. @Override
  25. protected void setListener() {
  26. mBtn1.setOnClickListener(this);
  27. mBtn2.setOnClickListener(this);
  28. }
  29. @Override
  30. public void onClick(View v){
  31. switch (v.getId()) {
  32. case R.id.button1:
  33. FlashHelper.getInstance().startFlick(mTvText);
  34. break;
  35. case R.id.button2:
  36. FlashHelper.getInstance().stopFlick(mTvText);
  37. break;
  38. default:
  39. break;
  40. }
  41. }
  42. @Override
  43. protected void onDestroy() {
  44. super.onDestroy();
  45. }
  46. }

MainActivity的xml文件很简单,就是一个按钮点击开启闪烁,然后一个按钮点击停止闪烁,闪烁效果在一个TextView上呈现,下面也简单的给出activity_main.xml的代码吧:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.android.testdemo.MainActivity" tools:layout_editor_absoluteY="81dp" android:background="@color/white">
  3. <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:text="開啓閃爍" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.501" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
  4. <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="40dp" android:text="停止閃爍" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button1" tools:ignore="MissingConstraints" />
  5. <TextView android:id="@+id/tv_text" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="112dp" android:text="控件閃爍測試" android:gravity="center" android:background="@color/green" android:textColor="@color/black" android:textSize="14sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button2" />
  6. </android.support.constraint.ConstraintLayout>

ok,使用方法介绍完了,现在来看看效果图和项目结构图吧

运行效果图

项目效果图

3xquKADbeq9migmFv76.gif

项目结构图

项目结构图

EzdyrzhTLPttOXYYCN0.png

Android代码实现控件闪烁效果

代码地址如下:
http://www.demodashi.com/demo/13162.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

发表评论

表情:
评论列表 (有 0 条评论,442人围观)

还没有评论,来说两句吧...

相关阅读