package com.goach.love.view;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.support.graphics.drawable.VectorDrawableCompat;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import com.goach.love.R;
import com.goach.love.utils.LoveEvaluator;
import java.util.Random;
/**
* Created by 钟光新 on 2016/7/1 0001.
*/
public class LoveAnimView extends ImageView implements ValueAnimator.AnimatorUpdateListener{
private Point mStartPoint;
private Point mEndPoint;
private int[] colors = new int[]{Color.YELLOW,Color.BLACK,Color.BLUE,Color.RED,Color.GREEN};
public LoveAnimView(Context context) {
this(context,null);
}
public LoveAnimView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public LoveAnimView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
VectorDrawableCompat a = VectorDrawableCompat.create(getResources(), R.drawable.love_drawable,
getResources().newTheme());
Random random = new Random();
int round = random.nextInt(5);
a.setTint(colors[round]);
//DrawableCompat.setTint(a,colors[round]);
VectorDrawableCompat boardVdc = VectorDrawableCompat.create(getResources(), R.drawable.border_drawable,
getResources().newTheme());
Drawable[] drawable = new Drawable[2];
drawable[0] = a;
drawable[1] = boardVdc;
LayerDrawable layerDrawable = new LayerDrawable(drawable);
setImageDrawable(layerDrawable);
}
public void setStartPosition(Point startPosition) {
startPosition.y -= 10;
this.mStartPoint = startPosition;
}
public void setEndPosition(Point endPosition) {
this.mEndPoint = endPosition;
}
public void startLoveAnimation(){
if(mStartPoint==null||mEndPoint==null)
throw new IllegalArgumentException("mStartPoint is not null or mEndPoint is not null");
int dirPointX = (int)(Math.random()*330);
int dirPointY = (mStartPoint.y+mEndPoint.y)/2;
Point dirPoint = new Point(dirPointX,dirPointY);
LoveEvaluator loveEvaluator = new LoveEvaluator(dirPoint);
ValueAnimator animator = ValueAnimator.ofObject(loveEvaluator,mStartPoint,mEndPoint);
animator.addUpdateListener(this);
animator.setDuration(2000);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
ViewGroup viewGroup = (ViewGroup) getParent();
setAlpha(0f);
viewGroup.removeView(LoveAnimView.this);
}
});
animator.setInterpolator(new LinearInterpolator());
animator.start();
}
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
Point point = (Point) valueAnimator.getAnimatedValue();
setX(point.x);
setY(point.y);
float value = point.y*1.0f/mStartPoint.y;
setAlpha(value);
invalidate();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
LoveAnim.zip (69个子文件)
LoveAnim
gradlew.bat 2KB
gradlew 5KB
gradle.properties 872B
.gradle
2.10
tasks
_app_compileDebugJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.bin 19KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis
localClassSetAnalysis.lock 17B
localClassSetAnalysis.bin 45KB
_app_compileDebugAndroidTestJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.bin 19KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis
localClassSetAnalysis.lock 17B
localClassSetAnalysis.bin 18KB
_app_compileDebugUnitTestJavaWithJavac
localJarClasspathSnapshot
localJarClasspathSnapshot.bin 19KB
localJarClasspathSnapshot.lock 17B
localClassSetAnalysis
localClassSetAnalysis.lock 17B
localClassSetAnalysis.bin 18KB
taskArtifacts
fileHashes.bin 136KB
cache.properties.lock 17B
taskArtifacts.bin 118KB
fileSnapshots.bin 4.22MB
cache.properties 31B
outputFileStates.bin 20KB
app
proguard-rules.pro 657B
src
test
java
com
goach
love
ExampleUnitTest.java 321B
androidTest
java
com
goach
love
ApplicationTest.java 357B
main
res
mipmap-xxxhdpi
ic_launcher.png 10KB
drawable
border_drawable.xml 685B
love_drawable.xml 641B
love_selector.xml 178B
mipmap-hdpi
ic_launcher.png 3KB
values
colors.xml 214B
strings.xml 74B
styles.xml 394B
dimens.xml 216B
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xhdpi
ic_launcher.png 5KB
layout
activity_main.xml 1KB
values-w820dp
dimens.xml 364B
java
com
goach
love
view
LoveAnimView.java 4KB
MainActivity.java 2KB
application
LApplication.java 431B
utils
LoveEvaluator.java 722B
AndroidManifest.xml 723B
app.iml 10KB
.gitignore 8B
build.gradle 691B
libs
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 231B
.idea
gradle.xml 739B
runConfigurations.xml 564B
misc.xml 3KB
.name 8B
copyright
profiles_settings.xml 76B
modules.xml 353B
encodings.xml 159B
compiler.xml 686B
workspace.xml 168KB
libraries
support_vector_drawable_24_0_0.xml 635B
support_annotations_24_0_0.xml 485B
support_v4_24_0_0.xml 898B
appcompat_v7_24_0_0.xml 756B
hamcrest_core_1_3.xml 526B
animated_vector_drawable_24_0_0.xml 640B
junit_4_12.xml 477B
.gitignore 105B
LoveAnim.iml 939B
local.properties 423B
settings.gradle 16B
build.gradle 521B
共 69 条
- 1
资源评论
- 有_缘_人2017-01-12很不错的例子!
- ffwwtt2017-08-13很不错的例子!
iGoach
- 粉丝: 99
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- NetOps-py通过sftp替换网络设备启动文件
- STM32单片机FPGA毕设电路原理论文报告任务驱动教学法在单片机课程教学中的应用
- STM32单片机FPGA毕设电路原理论文报告任务驱动法在单片机教学中的应用
- STM32单片机FPGA毕设电路原理论文报告人造金刚石压机智能化压力测控系统设计
- 以某列为依据匹配多项(Excel版)
- STM32单片机FPGA毕设电路原理论文报告人体短臂离心机实验台的显示控制系统
- STM32单片机FPGA毕设电路原理论文报告人工气候室监控系统的环境控制器研究
- STM32单片机FPGA毕设电路原理论文报告染整自动线张力控制系统的设计
- 数据挖掘与机器学习-实验
- 基于Linux系统Nginx的动态网站的LNMP环境源码包
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功