日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 心跳效果动画,Android实现心跳的效果

發(fā)布時(shí)間:2023/12/1 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 心跳效果动画,Android实现心跳的效果 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近再做一個(gè)教育類的項(xiàng)目。在做一些學(xué)習(xí)工具的時(shí)候,美工提出了一些要求,大致如下:

其實(shí)實(shí)現(xiàn)過程也不難,大致就是對一個(gè)視圖控件添加一個(gè)圓形的背景,然后該視圖進(jìn)行動畫處理,膨脹的同時(shí),透明度增大,收縮的同時(shí),透明度降低。

我在例子中是使用了TextView,所以首先對TextView添加一個(gè)圓形的背景:

android:shape="oval" >

android:height="90dp"

android:width="90dp" />

android:bottom="4dip"

android:left="4dip"

android:right="4dip"

android:top="4dip" />

然后為TextView添加動畫,包括調(diào)整大小的ScaleAnimation和調(diào)整透明度的AlphaAnimation。調(diào)整大小有兩個(gè)部分,膨脹和收縮。在膨脹完畢后馬上收縮,也就是對膨脹的動畫進(jìn)行監(jiān)聽,在onAnimationEnd()方法里面進(jìn)行收縮,

// 按鈕模擬心臟跳動

private void playHeartbeatAnimation(final View heartbeatView) {

AnimationSet swellAnimationSet = new AnimationSet(true);

swellAnimationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5f,

Animation.RELATIVE_TO_SELF, 0.5f));

swellAnimationSet.addAnimation(new AlphaAnimation(1.0f, 0.3f));

swellAnimationSet.setDuration(500);

swellAnimationSet.setInterpolator(new AccelerateInterpolator());

swellAnimationSet.setFillAfter(true);

swellAnimationSet.setAnimationListener(new AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

}

@Override

public void onAnimationRepeat(Animation animation) {

}

@Override

public void onAnimationEnd(Animation animation) {

AnimationSet shrinkAnimationSet = new AnimationSet(true);

shrinkAnimationSet.addAnimation(new ScaleAnimation(1.8f, 1.0f, 1.8f, 1.0f, Animation.RELATIVE_TO_SELF,

0.5f, Animation.RELATIVE_TO_SELF, 0.5f));

shrinkAnimationSet.addAnimation(new AlphaAnimation(0.3f, 1.0f));

shrinkAnimationSet.setDuration(1000);

shrinkAnimationSet.setInterpolator(new DecelerateInterpolator());

shrinkAnimationSet.setFillAfter(false);

heartbeatView.startAnimation(shrinkAnimationSet);// 動畫結(jié)束時(shí)重新開始,實(shí)現(xiàn)心跳的View

}

});

heartbeatView.startAnimation(swellAnimationSet);

}

心跳的效果是要不停地膨脹和收縮,所以要開一個(gè)線程來處理,每當(dāng)收縮完畢后重新膨脹。

private class HeatbeatThread extends Thread {

public void run() {

try {

sleep(100);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

while (true) {

runOnUiThread(new Runnable() {

public void run() {

for (View view : heartbeatViews) {

playHeartbeatAnimation(view);

}

}

});

try {

Thread.sleep(1500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

};

}

最后和Activity的生命周期結(jié)合,對線程進(jìn)行開始和結(jié)束。

private Thread heartbeatThread;

/**

* 開始心跳

*/

private void startHeartBeat() {

if (heartbeatThread == null) {

heartbeatThread = new HeatbeatThread();

}

if (!heartbeatThread.isAlive()) {

heartbeatThread.start();

}

}

/**

* 停止心跳

*/

private void stopHeartBeat() {

if (heartbeatThread != null && heartbeatThread.isInterrupted()) {

heartbeatThread.interrupt();

heartbeatThread = null;

System.gc();

}

}

@Override

protected void onResume() {

super.onResume();

startHeartBeat();

}

@Override

protected void onPause() {

super.onPause();

stopHeartBeat();

}

原文:http://blog.csdn.net/u014375869/article/details/46638061

總結(jié)

以上是生活随笔為你收集整理的android 心跳效果动画,Android实现心跳的效果的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。