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

前言

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

本文将涉及以下类容
1. 闪烁实现原理
2. 在MainActivity中的使用
3. 效果图和项目结构图

实现过程

下面作以讲解

一.闪烁实现原理

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

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

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

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

alphaAnimation.setRepeatCount(Animation.INFINITE);

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

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

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

view.clearAnimation();

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

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

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

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

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

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

二.在MainActivity中的使用

FlashHelper在MainActivity中使用样例如下:

package com.android.testdemo;import android.view.View;
import android.widget.Button;
import android.widget.TextView;import com.android.base.BaseActivity;import butterknife.BindView;public class MainActivity extends BaseActivity {@BindView(R.id.button1)Button mBtn1;@BindView(R.id.button2)Button mBtn2;@BindView(R.id.tv_text)TextView mTvText;@Overrideprotected int getContentViewId() {return R.layout.activity_main;}@Overrideprotected void initView() {}@Overrideprotected void initData() {}@Overrideprotected void setListener() {mBtn1.setOnClickListener(this);mBtn2.setOnClickListener(this);}@Overridepublic void onClick(View v){switch (v.getId()) {case R.id.button1:FlashHelper.getInstance().startFlick(mTvText);break;case R.id.button2:FlashHelper.getInstance().stopFlick(mTvText);break;default:break;}}@Overrideprotected void onDestroy() {super.onDestroy();}}

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

<?xml version="1.0" encoding="utf-8"?>
<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"><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" /><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" /><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" /></android.support.constraint.ConstraintLayout>

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

运行效果图

项目效果图

项目结构图

项目结构图

Android代码实现控件闪烁效果

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

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

Android代码实现控件闪烁效果相关推荐

  1. android通过代码设置铃声_第六十四回:Android中UI控件之SeekBar

    各位看官们,大家好,上一回中咱们说的是Android中UI控件之ProgressBar的例子,这一回咱们的例子是UI控件之SeekBar.闲话休提,言归正转.让我们一起Talk Android吧! 看 ...

  2. android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...

    1.Android手机的屏幕宽高度 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int w ...

  3. Android使用ListView控件问题

    Android使用ListView控件问题: The application has stopped unexpectedly, please try again. 开发环境:android 1.6 ...

  4. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  5. 004 Android之其他控件

    文章目录 ListView ListView常用属性 ListView基本使用 ListView动态插入数据 ListView实现图文混排 Adapter Adapter(适配器种类) 自定义Adap ...

  6. android 如何拖动控件的实现

    今天,简单讲讲android如何拖动控件. 之前,需要做一个功能,实现控件按照手势进行拖动,拖动到移动位置时可以进行一些操作.当时不知道怎么做,于是在网上查找了资料,终于是解决了这个问题.这里记录一下 ...

  7. android 动态修改控件的宽高

    今天,简单讲讲android如何动态设置控件的宽高. 这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下. ...

  8. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...

    本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...

  9. Android中ExpandableListView控件基本使用

    本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 mai ...

最新文章

  1. 左手程序员,右手作家:你必须会的Jupyter Notebook
  2. jquery_3month
  3. CF Theatre Square
  4. SilverlightCMS开发之3经典三页面CMS浮现
  5. Okhttp实用封装
  6. php程序设计经典300例,第16-20例
  7. OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
  8. SBUS协议转换芯片,SBUS转UART,sbus转rs232,sbus解码IC,zr003
  9. 项目启动会ppt_公司召开SAPERP项目启动会
  10. 搭建 Vue 开发环境
  11. Oracle 函数大全
  12. y = mapminmax(‘apply‘,x,ps)中各个参数是什么意思呢?
  13. Chakra-UI 学习笔记
  14. linux系统下questasim 10.7安装教程
  15. python数据处理工具-Pandas笔记
  16. C++学习之路抓紧跑路版(七)-动态申请内存空间
  17. 如何取消excel密码_Excel表格技巧—Excel表格如何取消密码
  18. 阿里云更换系统盘(公共镜像)
  19. 2022年7月份模拟考题解答
  20. Cookie原理详解

热门文章

  1. mysql memory优点_MySQL Memory存储引擎:优势及性能测试
  2. STM32F103:一.(3)IO方向
  3. 09.QT应用程序启动外部exe文件
  4. android update sdk --no-ui,CircleCI Android constraintLayout不起作用
  5. 【Pre蓝桥杯嵌入式】【STM32】Unkown device
  6. C语言中fscanf的函数,C语言fprintf()和fscanf()函数
  7. 数据结构与算法分析(一)——C++文件读写+py文件读写
  8. Linux的capability深入分析(1)
  9. 图像处理之三---摄像头灰度值处理
  10. linux指令 sed,Linux命令sed