zoukankan      html  css  js  c++  java
  • TranslateAnimation 运行动画后实际位置不正确问题

    最近在调试android 动画时候发现一个很奇怪问题,网上搜索都说TranslateAnimation 动画运行后,实际位置要在动画结束的监听里面重新设置才会正确,不然物体位置还是在原位。

    我根据网上所说之动画监听里面添加了动画结束监听,设置了物体到新位置,发现物体在视图里面还是错位,

    后来经过调试发现,必须在动画结束时候移除动画,然后重新设置位置才会正确

    AnimationSet set = new AnimationSet(true);
    set.addAnimation(translateAnimation);
    set.addAnimation(alpha);
    set.setDuration(1000);
    set.setFillAfter(true);
    texas.startAnimation(set);

    set.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {

    texas.clearAnimation();// 增加这句后,重新设置位置,物体才会移动正确
    Log.d(TAG,"end Top:" + texas.getTop() + ",Y:" + texas.getY());

    RelativeLayout.LayoutParams paramsTexas = new RelativeLayout.LayoutParams(30,30);
    paramsTexas.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    paramsTexas.addRule(RelativeLayout.ALIGN_PARENT_LEFT);

    if(targetdirect == 0)
    {
    paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() / 2,(top + playerPanel.getHeight() + 40),0,0);
    }
    if(targetdirect == 1)
    {
    paramsTexas.setMargins((left - 40),top + playerPanel.getHeight() / 2,0,0);
    }
    if(targetdirect == 2)
    {
    paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() / 2,top - 60,0,0);
    }
    if(targetdirect == 3)
    {
    paramsTexas.setMargins(gridLayout.getLeft() + left + playerPanel.getWidth() + 40,top + playerPanel.getHeight()/2,0,0);
    }
    texas.setLayoutParams(paramsTexas);



    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
    });

  • 相关阅读:
    tf.keras 用生成器读取图片数据+预处理
    pandas时间序列操作
    jupyter notebook 字体美化
    python响应式的数据可视化工具Dash
    python 地名地址解析(省、市、区县)
    将jupyter notebook嵌入博客园的博客
    Adaboost、GBDT、xgboost的原理基础
    数据预处理:分类变量实体嵌入做特征提取
    类不平衡问题的处理办法
    word2vec原理
  • 原文地址:https://www.cnblogs.com/maikkk/p/3596101.html
Copyright © 2011-2022 走看看