【Animation】 使用handler和Runnable实现某一个控件的抖动效果
布局:
<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实现某一个控件的抖动效果相关推荐
- android 实现控件搜索折叠效果 Animation动画折叠和普通折叠
android 实现控件搜索折叠效果 Animation动画折叠和普通控件直接折叠效果: 原理很简单,都是获取对应的高度,通过实现高度变化而改变显示效果: 话不多说直接上代码 1.普通折叠效果,以下是 ...
- 如果知道一个控件类型的对话框句柄是编辑框控件
如果知道一个控件类型的对话框句柄是编辑框控件 TCHAR chs[256]; ::GetClassName(pCtrl->m_hWnd, chs, 256); CString str(chs ...
- 刷新后控制TAB键到下一个控件
页面上的控件能一直TAB下去,这是系统的一个很基本的要求.在网上没有搜索到相关的方法.我觉得一般做法都是使页面无刷新,但是如果遇到页面不得不刷新的情况,如何去控制呢? 思路是很简单的,首先是获取 ...
- MFC隐藏和显示一个控件的方法
通常,我们在用MFC做界面的时候,控制控件的出现和隐藏很重要,同时这也体现出界面的友好和灵活性. 那么,怎样在MFC中实现一个控件的隐藏和显示呢?这里,我就说一个我知道的简单方法. 第一.先获得控件对 ...
- android让一个控件跟上面控件对其,学个明白--Android控件架构
Android控件架构 1.什么是View? View是Android中所有控件的基类.View是界面层的控件的一种抽象,它代表了一个控件.在Android中每个控件都会在界面中占得一块矩形的区域.在 ...
- 飞鸽传书:webbrowser 本生是一个控件
飞鸽传书:webbrowser 本生是一个控件,基本上用 specialfolder(6 ) 就可以得到收藏夹的路径, 然后你可以用dir去循环读入每个目录,然后dir里面的file, file的名字 ...
- 怎么把一个控件放到tab页面上去?_C/C++应用无障碍化如何支持Tab键浏览
一.前言 我们知道,正常人操作电脑,只需一眼便能得知屏幕上的内容,要想激活某个控件,例如按钮等,只需将鼠标拖动过去点击即可. 但这对于盲人而言,却十分繁琐. 盲人使用屏幕阅读器来操作电脑,在使用某个软 ...
- Flutter进阶—布局一个控件
要在Flutter中布局单个控件,创建一个简单的控件并将其显示在屏幕上.在Flutter中,将文本.图标或图像放在屏幕上只需几步. 1.选择一个布局控件来保存对象 根据您希望对齐或约束可见控件的方式, ...
- WPF中一个控件绑定另一个控件的属性
原文:WPF中一个控件绑定另一个控件的属性 如同一个Grid中的一个按钮根据另一个按钮的显示与否作出不同的响应: 绑定的时候通过ElementName来指定控件 <Grid Margin=&qu ...
最新文章
- spring Ioc本质
- 【H2645】帧内预测
- 多重集表示合json数据_计数DP(划分数,多重集组合数)
- kafka集群中常见错误的解决方法:kafka.common.KafkaException: Should not set log end offset on partition
- python编程 从入门到实践豆瓣-三周刷完《Python编程从入门到实践》的感受
- 移动银行木马活跃度升级 恐成黑客攻击跳板
- python中等于号可以用is代替_python中is与双等于号“==”的区别示例详解
- 中国金控(00875.HK)获主席兼首席执行官林裕豪增持15.8万股
- Java中的锁原理、锁优化、CAS、AQS详解!
- 【信息安全】ECC加密算法入门介绍
- C++ inline 函数简介
- bzoj 4447 小凸解密码
- 《庆余年》里的五竹,到底是不是机器人?
- 关于IIS连接数限制的介绍
- vue中使用window.open会在url前自动添加本地服务器的地址bug修复
- 拓端tecdat|matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
- c语言程序代码分享,一些简单的C语言程序代码(最新整理)
- vue使用高德地图web端JSAPI 路线规划、搜索提示教程
- 帝国cms 制作网站地图
- 腾讯云函数要收费了,试试阿里云的云效codeup吧,这里有教程