布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#000000"><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/btn"android:text="Hello!"/>
</LinearLayout>


代码:   使用handler的postDelayed方法每半秒钟发送一个消息来执行动画效果,同时在handler里面使动画平移的距离缩短,当距离为零时就通过handler的 removeCallbacks方法取消runnable正在执行的操作! 每一次点击按钮都重置一下动画的距离,并且开启runnable,执行操作!

package com.example.viewpager;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.TranslateAnimation;
import android.widget.Button;public class MainActivity extends Activity {private Button btn;private int length;Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case 0:length -= 2.5;TranslateAnimation animation = new TranslateAnimation(0,length , 0, 0);animation.setDuration(50);Log.i("----", length+"");btn.startAnimation(animation);if(length==0){handler.removeCallbacks(runnable);}break;default:break;}};};Runnable runnable = new Runnable() {public void run() {handler.sendEmptyMessage(0);handler.postDelayed(this, 80);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {length = 30;handler.post(runnable);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}


转载于:https://www.cnblogs.com/suncoolcat/p/3397977.html

【Animation】 使用handler和Runnable实现某一个控件的抖动效果相关推荐

  1. android 实现控件搜索折叠效果 Animation动画折叠和普通折叠

    android 实现控件搜索折叠效果 Animation动画折叠和普通控件直接折叠效果: 原理很简单,都是获取对应的高度,通过实现高度变化而改变显示效果: 话不多说直接上代码 1.普通折叠效果,以下是 ...

  2. 如果知道一个控件类型的对话框句柄是编辑框控件

    如果知道一个控件类型的对话框句柄是编辑框控件 TCHAR chs[256];  ::GetClassName(pCtrl->m_hWnd, chs, 256);  CString str(chs ...

  3. 刷新后控制TAB键到下一个控件

    页面上的控件能一直TAB下去,这是系统的一个很基本的要求.在网上没有搜索到相关的方法.我觉得一般做法都是使页面无刷新,但是如果遇到页面不得不刷新的情况,如何去控制呢?    思路是很简单的,首先是获取 ...

  4. MFC隐藏和显示一个控件的方法

    通常,我们在用MFC做界面的时候,控制控件的出现和隐藏很重要,同时这也体现出界面的友好和灵活性. 那么,怎样在MFC中实现一个控件的隐藏和显示呢?这里,我就说一个我知道的简单方法. 第一.先获得控件对 ...

  5. android让一个控件跟上面控件对其,学个明白--Android控件架构

    Android控件架构 1.什么是View? View是Android中所有控件的基类.View是界面层的控件的一种抽象,它代表了一个控件.在Android中每个控件都会在界面中占得一块矩形的区域.在 ...

  6. 飞鸽传书:webbrowser 本生是一个控件

    飞鸽传书:webbrowser 本生是一个控件,基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字 ...

  7. 怎么把一个控件放到tab页面上去?_C/C++应用无障碍化如何支持Tab键浏览

    一.前言 我们知道,正常人操作电脑,只需一眼便能得知屏幕上的内容,要想激活某个控件,例如按钮等,只需将鼠标拖动过去点击即可. 但这对于盲人而言,却十分繁琐. 盲人使用屏幕阅读器来操作电脑,在使用某个软 ...

  8. Flutter进阶—布局一个控件

    要在Flutter中布局单个控件,创建一个简单的控件并将其显示在屏幕上.在Flutter中,将文本.图标或图像放在屏幕上只需几步. 1.选择一个布局控件来保存对象 根据您希望对齐或约束可见控件的方式, ...

  9. WPF中一个控件绑定另一个控件的属性

    原文:WPF中一个控件绑定另一个控件的属性 如同一个Grid中的一个按钮根据另一个按钮的显示与否作出不同的响应: 绑定的时候通过ElementName来指定控件 <Grid Margin=&qu ...

最新文章

  1. spring Ioc本质
  2. 【H2645】帧内预测
  3. 多重集表示合json数据_计数DP(划分数,多重集组合数)
  4. kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition
  5. python编程 从入门到实践豆瓣-三周刷完《Python编程从入门到实践》的感受
  6. 移动银行木马活跃度升级 恐成黑客攻击跳板
  7. python中等于号可以用is代替_python中is与双等于号“==”的区别示例详解
  8. 中国金控(00875.HK)获主席兼首席执行官林裕豪增持15.8万股
  9. Java中的锁原理、锁优化、CAS、AQS详解!
  10. 【信息安全】ECC加密算法入门介绍
  11. C++ inline 函数简介
  12. bzoj 4447 小凸解密码
  13. 《庆余年》里的五竹,到底是不是机器人?
  14. 关于IIS连接数限制的介绍
  15. vue中使用window.open会在url前自动添加本地服务器的地址bug修复
  16. 拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
  17. c语言程序代码分享,一些简单的C语言程序代码(最新整理)
  18. vue使用高德地图web端JSAPI 路线规划、搜索提示教程
  19. 帝国cms 制作网站地图
  20. 腾讯云函数要收费了,试试阿里云的云效codeup吧,这里有教程

热门文章

  1. SQL 基础之管理方案对象(十七)
  2. go.js节点字体设置
  3. 乐观锁与悲观锁的应用场景
  4. dedecms5.7添加栏目时以简拼作目录名 以拼音首字母作文件夹名称
  5. wlan bss ess ssid
  6. 美团暑期日常实习前端面试
  7. 匿名函数与自执行函数
  8. 多线程中的互斥控制程序代码_Java中的并发——线程安全性
  9. (21)css3盒模型box-sizing属性
  10. 第三十一章 考试作弊