Android实现图片点击爆炸效果

本文实例为大家分享了Android实现图片点击爆炸效果的具体代码,供大家参考,具体内容如下

实现效果:

需要注意的点:

ValueAnimator

ValueAnimator,是针对值的,也就是说ValueAnimator不会对控件进行任何操作,而是控制值的变化,然后我们监听这个值的变化过程,从而来控制控件的变化。什么意思呢?例如我们使用属性动画来控制TextView的位移,我们在初始化ValueAnimator时,会设置一个初始值和结束的值,假如我用这两个值来控制TextView在y轴上的位置,然后设置监听器,监听初始值变化到结束值的过程,在不断变化过程中,通过调用TextView的layout方法来不断更新TextView的位置,从而实现位移动画。

我们可以大概总结使用ValueAnimator的两个主要过程:

(1). 初始化ValueAnimator,并设置初始值和结束值,还有动画的时间,然后start。

(2). 给ValueAnimator设置监听器,通过getAnimatedValue()拿到变化值,然后我们更新控件的变化。

实现步骤

1.首先封装一个Ball粒子对象

public class Ball {

 public int color; //图片像素点颜色值
 public float x; //粒子圆心坐标x
 public float y; //粒子圆心坐标y
 public float r; //粒子半径

 public float vX;//粒子运动水平方向速度
 public float vY;//粒子运动垂直方向速度
 public float aX;//粒子运动水平方向加速度
 public float aY;//粒子运动垂直方向加速度
}

2.自定义SplitView 继承View

2.1粒子相关属初始化和ValueAnimator初始化

private void init() {
 mPaint = new Paint();
 mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.cat);

 for (int i = 0; i < mBitmap.getWidth(); i++) {
  for (int j = 0; j < mBitmap.getHeight(); j++) {
  Ball ball = new Ball();
  ball.color = mBitmap.getPixel(i,j);
  ball.x = i * d + (d/2);
  ball.y = j * d + (d/2);
  ball.r = d/2;

  //速度(-20,20)
  ball.vX = (float) (Math.pow(-1, Math.ceil(Math.random() * 1000)) * 20 * Math.random());
  ball.vY = rangInt(-15, 35);

  //加速度
  ball.aX = 0;
  ball.aY = 0.98f;

  mBalls.add(ball);
  }
 }

 mAnimator = ValueAnimator.ofFloat(0,1);
 mAnimator.setRepeatCount(-1);
 mAnimator.setDuration(2000);
 mAnimator.setInterpolator(new LinearInterpolator());
 mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  @Override
  public void onAnimationUpdate(ValueAnimator animation) {
  updateBall();
  invalidate();
  }
 });
 }

2.2更新粒子的位置

private void updateBall() {
 for (Ball ball:mBalls) {
  ball.x += ball.vX;
  ball.y += ball.vY;

  ball.vX += ball.aX;
  ball.vY += ball.aY;
 }
 }

2.3重写onDraw()方法绘制粒子

protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);

 canvas.translate(250,250);
 for (Ball ball:mBalls) {
  mPaint.setColor(ball.color);
  canvas.drawCircle(ball.x, ball.y, ball.r, mPaint);
 }
 }

2.4重写onTouchEvent()方法触发触发时间并执行动画

public boolean onTouchEvent(MotionEvent event) {
 if (event.getAction() == MotionEvent.ACTION_DOWN){
  //执行动画
  mAnimator.start();
 }
 return super.onTouchEvent(event);
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android自定义View新年烟花、祝福语横幅动画

    新年了,项目中要作个动画,整体要求实现彩带乱飞,烟花冲天而起,烟花缩放,小鸡换图,小鸡飘移,横幅裁剪.展开等动画效果,全局大量使用了属性动画来实现. 如下效果图: 我在实现过程中,横幅的裁剪计算,捣腾了比较久的时间,初版采用属性动画计算float的一个比率值,来配合每一帧的裁剪绘制,如下代码: private static class RollView extends View { private Bitmap mBitmap; private Rect mSrc; private Rect m

  • Android实现图片点击爆炸效果

    本文实例为大家分享了Android实现图片点击爆炸效果的具体代码,供大家参考,具体内容如下 实现效果: 需要注意的点: ValueAnimator ValueAnimator,是针对值的,也就是说ValueAnimator不会对控件进行任何操作,而是控制值的变化,然后我们监听这个值的变化过程,从而来控制控件的变化.什么意思呢?例如我们使用属性动画来控制TextView的位移,我们在初始化ValueAnimator时,会设置一个初始值和结束的值,假如我用这两个值来控制TextView在y轴上的位置

  • Android实现图片点击放大

    本文实例为大家分享了Android实现图片点击放大的具体代码,供大家参考,具体内容如下 在我的项目中,有点击图片banner后放大浏览的功能.我的做法就是创建一个专门的图片显示Activity,布局里面用ViewPage,这样就能控制图片的左右滑动,并且控制首先显示第几张图片. 功能是ok的,显示也是正常的.但我花费了好几天的时间来实现.完善这个功能. ShowMoreImageActivity /** * 图片放大 */ public class ShowMoreImageActivity e

  • Android实现图片点击预览效果(zoom动画)

    参考:https://developer.android.google.cn/training/animation/zoom.html 1.创建Views 下面的布局包括了你想要zoom的大版本和小版本的view. 1.ImageButton是小版本的,能点击的,点击后显示大版本的ImageView. 2.ImageView是大版本的,可以显示ImageButton点击后的样式. 3.ImageView一开始是不可见的(invisible),当ImageButton点击后,它会实现zoom动画,

  • jquery实现的图片点击滚动效果

    需要添加jquery文件才可以调试 复制代码 代码如下: <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(function(){ //alert($('#findclose').closest('div').attr('id')); var pic_length = $('#gd

  • Android WebView中图片浏览及缩放效果

    本文实例为大家分享了Android WebView图片浏览及缩放效果展示的具体代码,供大家参考,具体内容如下 此工程用到了两个开源库: PhotoView支持图片的缩放 Android-Universal-Image-Loader图片的异步加载 (android studio)将两个源工程中的library文件夹导入到Demo Module所在的Project中,修改各自的build.gradle文件,让里面的版本号.所用的android包等与Demo Module相同即可.大致如图: 源代码:

  • Android实现图片浮动随意拖拽效果

    本文实例为大家分享了Android实现图片浮动拖拽效果的具体代码,供大家参考,具体内容如下 实现步骤 1.先自定义一个浮动工具类 public class MoveImage extends ImageView { /** * * 浮动工具类 * */ private int lastX = 0; private int lastY = 0; private int dx; private int dy; private float movex = 0; private float movey

  • Android使用ViewPager实现图片滑动预览效果

    本文为大家分享了Android ViewPager实现图片滑动预览效果展示的具体代码,供大家参考,具体内容如下 效果图: 滑动前: 滑动后: 代码非常简单,实现起来很容易 xml代码: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/ap

  • Android仿微信图片点击全屏效果

    废话不多说,先看下效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Intent传送,素材内容均来自网络,(感谢聪明的蘑菇) 图片都是Glide异步下的,下的,下的重要的事情说三次,然后就是用动画做放大操作然后显示出来了(并没有做下载原图的实现,反正也是一样 下载下来Set上去而且动画都不需要更简便). OK,我们来看分析下 obj,目录下分别创建了2个对象,一个用来使用来处理显示页面的图片尺寸信息以

  • Android仿微信图片点击浏览的效果

    本篇我们来做一个类似于微信的图片点击浏览的效果,点击小图图片后会放大至全屏显示,且中间有一个2D平滑过渡的效果. 思路如下: 首先,从图片缩略界面跳转到图片详情页面,应该是从一个Activity跳转到另外一个Activity,应该图片详情页面也有很多操作,用View或者Dialog不是很好.所以现在难点就是,如何使得前一个界面的ImageView在另外一个界面做缩放切割动画. 其次,一般缩略界面的ImageView的是正方形的,并且是CENTER_CROP缩放属性的.CENTER_CROP属性会

  • Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)

    Android实战打飞机游戏子弹生成,新建子弹类 public class Bullet { // 子弹图片资源 public Bitmap bmpBullet; // 子弹的坐标 public int bulletX, bulletY; // 子弹的速度 public int speed; // 子弹的种类以及常量 public int bulletType; // 主角的 public static final int BULLET_PLAYER = -1; // 鸭子的 public st

随机推荐