android波纹动画,Android代码实现长按显示波纹外扩动画

项目两张图片:

wave

0c0720ae2c9b7e9bd46a60e0cd3506b2.png btn

97477f7e42e62b73e62eb34d4118b993.png

代码:

package com.example.waveanimation;

import Android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.app.Activity;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.view.animation.AlphaAnimation;

import android.view.animation.AnimationSet;

import android.view.animation.ScaleAnimation;

import android.widget.ImageView;

public class MainActivity extends Activity {

private static final int ANIMATIONEACHOFFSET = 600; // 每个动画的播放时间间隔

private AnimationSet aniSet, aniSet2, aniSet3;

private ImageView btn, wave1, wave2, wave3;

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

if (msg.what == 0x222) {

wave2.startAnimation(aniSet2);

} else if (msg.what == 0x333) {

wave3.startAnimation(aniSet3);

}

super.handleMessage(msg);

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

aniSet = getNewAnimationSet();

aniSet2 = getNewAnimationSet();

aniSet3 = getNewAnimationSet();

setContentView(R.layout.activity_main);

btn = (ImageView) findViewById(R.id.btn);

wave1 = (ImageView) findViewById(R.id.wave1);

wave2 = (ImageView) findViewById(R.id.wave2);

wave3 = (ImageView) findViewById(R.id.wave3);

btn.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

showWaveAnimation();

break;

case MotionEvent.ACTION_UP:

cancalWaveAnimation();

break;

case MotionEvent.ACTION_CANCEL:

cancalWaveAnimation();

break;

}

return true;

}

});

}

private AnimationSet getNewAnimationSet() {

AnimationSet as = new AnimationSet(true);

ScaleAnimation sa = new ScaleAnimation(1f, 2.3f, 1f, 2.3f,

ScaleAnimation.RELATIVE_TO_SELF, 0.5f,

ScaleAnimation.RELATIVE_TO_SELF, 0.5f);

sa.setDuration(ANIMATIONEACHOFFSET * 3);

sa.setRepeatCount(-1);// 设置循环

AlphaAnimation aniAlp = new AlphaAnimation(1, 0.1f);

aniAlp.setRepeatCount(-1);// 设置循环

as.setDuration(ANIMATIONEACHOFFSET * 3);

as.addAnimation(sa);

as.addAnimation(aniAlp);

return as;

}

private void showWaveAnimation() {

wave1.startAnimation(aniSet);

handler.sendEmptyMessageDelayed(0x222, ANIMATIONEACHOFFSET);

handler.sendEmptyMessageDelayed(0x333, ANIMATIONEACHOFFSET * 2);

}

private void cancalWaveAnimation() {

wave1.clearAnimation();

wave2.clearAnimation();

wave3.clearAnimation();

}

}

xml文件:

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/wave1"

android:layout_width="150dp"

android:layout_height="150dp"

android:layout_centerInParent="true"

android:background="@drawable/wave"

/>

android:id="@+id/wave2"

android:layout_width="150dp"

android:layout_height="150dp"

android:layout_centerInParent="true"

android:background="@drawable/wave"/>

android:id="@+id/wave3"

android:layout_width="150dp"

android:layout_height="150dp"

android:layout_centerInParent="true"

android:background="@drawable/wave" />

android:id="@+id/btn"

android:layout_width="166dp"

android:layout_height="166dp"

android:layout_centerInParent="true"

android:background="@drawable/btn" />

效果图:

8b1c3b8df4dcf002f6466956da33e38c.png

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值