【Android控件】呼吸效果的动画
来源:互联网 发布:中国出境旅游数据 编辑:程序博客网 时间:2024/04/28 22:02
由于只是展示上的,就不需要使用属性动画。直接使用的补间动画,简单的动画。
public class MainActivity extends Activity { private ImageView mImageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.testview); // 普通的imageview mImageView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { hideRepeatBtn(); return false; } }); mImageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showRepeatBtn(); } }); showRepeatBtn(); } /** * 显示呼吸效果动画 */ private void showRepeatBtn() { mImageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 触摸时取消动画,并缩小,有按下的感觉 if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) { mImageView.setScaleX(0.9f); mImageView.setScaleY(0.9f); if (mImageView.getAnimation() != null) { mImageView.getAnimation().cancel(); } } else { // 松手后,恢复大小,并继续呼吸效果 mImageView.setScaleX(1.0f); mImageView.setScaleY(1.0f); if (mImageView.getAnimation() != null) { mImageView.getAnimation().start(); } } return false; } }); // 放大小时view,完全显示后开始呼吸效果 ScaleAnimation enterAnim = new ScaleAnimation(0f, 1.1f, 0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); enterAnim.setDuration(300); // 默认只执行一遍 enterAnim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { ScaleAnimation anim = new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); anim.setDuration(750); anim.setRepeatMode(Animation.REVERSE); // 放大并缩小,时间为750*2 anim.setRepeatCount(Animation.INFINITE); // 无限循环 mImageView.setAnimation(anim); mImageView.startAnimation(mImageView.getAnimation()); } }); mImageView.startAnimation(enterAnim); } /** * 动画隐藏连发按钮 */ private void hideRepeatBtn() { // 缩小退出 ScaleAnimation anim = new ScaleAnimation(1.1f, 0f, 1.1f, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); anim.setDuration(300); anim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { if (mImageView.getAnimation() != null) { mImageView.getAnimation().cancel(); } } }); mImageView.startAnimation(anim); }}
0 0
- 【Android控件】呼吸效果的动画
- android 自定义动画 圆呼吸效果 ValueAnimator
- 呼吸灯效果动画
- android 实现控件的旋转动画效果
- android 实现控件的旋转动画效果
- 一个网页控件的呼吸灯效果实例 分享
- Android 按钮呼吸灯效果
- android 控件动画效果实现
- android 控件动画效果实现
- iOS 会呼吸的动画
- Android animation呼吸动画 心形动画
- Android 动画1--View控件的显示和隐藏效果
- Android学习之动画效果的实现、自定义控件皮肤
- Android 动画1--View控件的显示和隐藏效果
- Android 动画1--View控件的显示和隐藏效果
- 使用Canvas对应用图标的角标做缩放动画,具有呼吸效果
- Android呼吸灯效果两种实现
- Android中给控件设置动画效果
- (枚举)算法竞赛入门经典(7.1.4)双基回文数
- Matlab中的一些小技巧
- 堆的实现
- storm笔记 -- 与kafka的集成
- NYOJ67三角形面积
- 【Android控件】呼吸效果的动画
- c++数组的操作
- Linux下Camera驱动结构
- 实现一个字符串类,可以比较和连接两个字符串
- 特征点检测学习(surf算法)
- Java中的内部类
- MATLAB中的分类器
- hibernate之SessionFactory和Session
- 使用dup2重定向IO流拷贝文件