android-魔法泡泡动画分析(附源码)(1)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在屏幕中的效果(左上很小的那个,其他都是背景图):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

中间很小的那个就是

先看动画实现代码explosion.xml(explosion意思是爆发)


  <animation-list xmlns:android="http://schemas.android.com/apk/res/android"

  android:oneshot\="true">

  <item android:drawable="@drawable/explode1" android:duration="70" />

  <item android:drawable="@drawable/explode2" android:duration="70" />

  <item android:drawable="@drawable/explode3" android:duration="70" />

  <item android:drawable="@drawable/explode4" android:duration="70" />

  <item android:drawable="@drawable/explode5" android:duration="70" />

  </animation-list>

手指点击后产生泡泡的动画是5张40*40的图片顺序播放产生的,每张持续时间为70毫秒,播放模式为oneshot,即一次。

BubbleExplosion.java


  package com.ray.bubble;

  import android.app.Activity;

  import android.content.Context;

  import android.graphics.drawable.AnimationDrawable;

  import android.os.Bundle;

  import android.view.MotionEvent;

  import android.view.View;

  import android.view.Window;

  import android.view.WindowManager;

  import android.view.View.OnTouchListener;

  import android.widget.FrameLayout;

  import android.widget.ImageView;

  public class BubbleExplosion extends Activity {

  private FrameLayout fl;

  private ExplosionView exv1;

  private AnimationDrawable exa1;

  //        private Contact contact;

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  //set full screen

  requestWindowFeature(Window.FEATURE\_NO\_TITLE);

  getWindow().setFlags(WindowManager.LayoutParams. FLAG\_FULLSCREEN ,

  WindowManager.LayoutParams. FLAG\_FULLSCREEN);

  fl \= new FrameLayout(this);

  fl.setBackgroundResource(R.drawable.bg);

  exv1 \= new ExplosionView(this);

  exv1.setVisibility(View.INVISIBLE);

  exv1.setBackgroundResource(R.anim.explosion);

  exa1 \= (AnimationDrawable)exv1.getBackground();

  fl.addView(exv1);

  fl.setOnTouchListener(new LayoutListener());

  setContentView(fl);

  }

  class ExplosionView extends ImageView{

  public ExplosionView(Context context) {

  super(context);

  }

  //handle the location of the explosion

  public void setLocation(int top,int left){



### 最后

针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

* **Android前沿技术大纲**

  ![](https://img-blog.csdnimg.cn/img_convert/51a1f76ec9f75c4204079d04dd308259.webp?x-oss-process=image/format,png)

* **全套体系化高级架构视频**

  ![](https://img-blog.csdnimg.cn/img_convert/bf06a3a1e009b4dfc7fc8e5d4df8f265.webp?x-oss-process=image/format,png)

> **Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**


存中...(img-4zlICOAb-1719655971373)]

> **Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。**


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值