【问题标题】:image in image button blinks once when the animation of outline of the imageview ends当imageview的轮廓动画结束时,image in image按钮闪烁一次
【发布时间】:2018-07-19 20:28:29
【问题描述】:
public class MainActivity extends Activity {

ValueAnimator animator;
ImageButton testImageButton;
float rad=1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    testImageButton = findViewById(R.id.ib_test);
    testImageButton.setOutlineProvider(outlineProvider);
    testImageButton.setClipToOutline(true);

    animator = (ValueAnimator) 
    AnimatorInflater.loadAnimator(this,R.animator.radius);
    animator.addUpdateListener(mListener);

}


public void clickedAnimator(View v){
    animator.start();
}


public void testMe(View v){
    l("testMe");
}

ValueAnimator.AnimatorUpdateListener mListener = new 
                            ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        float i= (float) valueAnimator.getAnimatedValue();
        rad = i;
        testImageButton.setOutlineProvider(outlineProvider);
    }
};


ViewOutlineProvider outlineProvider = new ViewOutlineProvider() {
    @Override
    public void getOutline(View view, Outline outline) {
        outline.setRoundRect(0,0,view.getWidth(),view.getHeight(),        
                                          rad*((float)view.getWidth())/2);
    }
};



public void l(String s){
    Log.v(getClass().getSimpleName(),s);
}

}

我正在尝试通过不断更新设置为 imageview 的 ViewOutlineProvider 来将 ImageView 的轮廓从 Circle 设置为 Rectangle。

一切正常,但动画结束时,imageView 中的 Image 闪烁一次。

rad的值在500ms内从1变为0。

【问题讨论】:

    标签: android outline


    【解决方案1】:

    嗯,这行可能对你有帮助:android:fillAfter="true"

    将它放在你的动画 XML 文件中的 set 属性中,例如:

     <set [...]
         android:fillAfter="true">
    

    这在动画最后出现错误的情况下帮助了我很多次。可能对你有用,也可能不,值得一试。

    【讨论】:

    • 该属性适用于视图动画而不是属性动画
    猜你喜欢
    • 2018-01-25
    • 2015-04-29
    • 2013-01-24
    • 2014-08-23
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多