属性动画的小球垂直下落与抛物线下落
来源:互联网 发布:数据库笛卡尔积怎么算 编辑:程序博客网 时间:2024/04/20 05:27
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//获取屏幕的高度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//现实指标
heightPixels = displayMetrics.heightPixels;
id_ball.setOnClickListener(new View.OnClickListener() {
@Override
}
});
}
// 抛物线
public void paowuxian(View view) {
//获取动画执行类,
ValueAnimator valueAnimator = new ValueAnimator();
//设置动画执行时间
valueAnimator.setDuration(3000);
//设置起始点
valueAnimator.setObjectValues(new PointF(0, 0));
//设置类型估值
valueAnimator.setEvaluator(new TypeEvaluator<PointF>() {
@Override
public PointF evaluate(float v, PointF pointF, PointF t1) {
PointF point = new PointF();
point.x = 200 * v * 2;
point.y = 0.5f * 200 * (v * 3) * (v * 2);
return point;
}
});
valueAnimator.start();
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
PointF point = (PointF) animation.getAnimatedValue();
id_ball.setX(point.x);
id_ball.setY(point.y);
}
});
}
//垂直落下
public void verticalRun(View view){
//垂直//参数一:X起始位置,,参数二Y起始位置
ValueAnimator animator = ValueAnimator.ofFloat(0, heightPixels - id_ball.getHeight());
animator.setTarget(id_ball);
animator.setDuration(3000).start();
// animator.setInterpolator(value)
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
id_ball.setTranslationY((Float) animation.getAnimatedValue());
}
});
}
}
private ImageView id_ball;
private int heightPixels;
//valueanimator实现的动画
//不需要设置操作的属性,这就是和objectanimator的区别
//好处,不需要操作对象的属性,一定要有getter和settter方法,可以根据当前动画的计算值,来操作任何属性@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
id_ball = (ImageView) findViewById(R.id.id_ball);//获取屏幕的高度
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
//现实指标
heightPixels = displayMetrics.heightPixels;
id_ball.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
// 抛物线
public void paowuxian(View view) {
//获取动画执行类,
ValueAnimator valueAnimator = new ValueAnimator();
//设置动画执行时间
valueAnimator.setDuration(3000);
//设置起始点
valueAnimator.setObjectValues(new PointF(0, 0));
//设置类型估值
valueAnimator.setEvaluator(new TypeEvaluator<PointF>() {
@Override
public PointF evaluate(float v, PointF pointF, PointF t1) {
PointF point = new PointF();
point.x = 200 * v * 2;
point.y = 0.5f * 200 * (v * 3) * (v * 2);
return point;
}
});
valueAnimator.start();
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
PointF point = (PointF) animation.getAnimatedValue();
id_ball.setX(point.x);
id_ball.setY(point.y);
}
});
}
//垂直落下
public void verticalRun(View view){
//垂直//参数一:X起始位置,,参数二Y起始位置
ValueAnimator animator = ValueAnimator.ofFloat(0, heightPixels - id_ball.getHeight());
animator.setTarget(id_ball);
animator.setDuration(3000).start();
// animator.setInterpolator(value)
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
id_ball.setTranslationY((Float) animation.getAnimatedValue());
}
});
}
}
阅读全文
0 0
- 属性动画的小球垂直下落与抛物线下落
- Java小球垂直下落垂直反弹代码
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 关于小球下落的问题
- 关于一个DL/ML(深度学习/机器学习)的学习计划
- python里使用协程和StreamReader、StreamWriter来创建echo客户端
- 状压dp
- vim之高级功能入门
- The requested resource () is not available.的一种原因
- 属性动画的小球垂直下落与抛物线下落
- #!/usr/bin/env python
- VC++中Format函数详解
- 【unity】unity自动化打包——利用XUPorter解决xcode8问题
- struts2 常用常量配置详解
- more effective 一些设计模式解析一
- js常用方法(写给自己)
- 数学建模
- 左右最值最大差