1

我想制作一个ImageView在屏幕上从左到右运行的动画,当它达到屏幕的 50% 时,它又回来了。我的XML

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"

    android:duration="1000"
    android:propertyName="x"
    android:repeatMode="reverse"
    android:repeatCount="1"
    android:valueFrom="0"
    android:valueTo="250" >
</objectAnimator>

我的应用程序在我的手机上运行良好,但是当它在更小或更大的手机上运行时,它运行不佳。我想使用ObjectAnimator,我的应用程序最小 SDK API 是 13。谁能帮助我?提前致谢。

4

1 回答 1

1

为获得更好的结构,推荐使用显示屏幕宽度的动态方法

首先计算屏幕宽度来测量屏幕的一半

    Display display = getWindowManager().getDefaultDisplay();
    Point point=new Point();
    display.getSize(point);
    final int width = point.x; // screen width
    final float halfW = width/2.0f; // half the width or to any value required,global to class
    ObjectAnimator lftToRgt,rgtToLft; // global to class

    // initialize the view in onCreate
    imageView = (ImageView) findViewById(R.id.imageButtontest);

    // set the click listener  
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
               anim();// call to animate
         }
     });

将以下功能添加到您的课程中并享受。

void anim(){
    // translationX to move object along x axis
    // next values are position value
    lftToRgt = ObjectAnimator.ofFloat( imageView,"translationX",0f,halfW )
            .setDuration(700); // to animate left to right
    rgtToLft = ObjectAnimator.ofFloat( imageView,"translationX",halfW,0f )
            .setDuration(700); // to animate right to left

    AnimatorSet s = new AnimatorSet();//required to set the sequence
    s.play( lftToRgt ).before( rgtToLft ); // manage sequence
    s.start(); // play the animation
}

查看完整的代码片段

于 2016-09-14T14:55:26.173 回答