如何为多个屏幕设置从左到右和反转的动画师
Posted
技术标签:
【中文标题】如何为多个屏幕设置从左到右和反转的动画师【英文标题】:How to set animator for left to right and inverse for Multiple Screens 【发布时间】:2017-01-22 07:02:59 【问题描述】:我想为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。谁能帮助我?提前致谢。
【问题讨论】:
【参考方案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
查看完整的Code Snippet
【讨论】:
提前致谢。但我想在 API 13 上使用 objectAnimator 和我的应用程序。 @KhoaMadridista 你应该早点说出来 @KhoaMadridista 给你,伙计以上是关于如何为多个屏幕设置从左到右和反转的动画师的主要内容,如果未能解决你的问题,请参考以下文章
当UIVIew隐藏在sameView中时,如何为UIview设置动画