如何在Android Object Animator上获取随机数

时间:2014-03-02 07:35:52

标签: android android-animation

大家好我想在我的对象动画师中获取随机数。 我想得到“TranslationX”的随机数 `

           imagebutton1.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
           counter++;
            final TextView score = (TextView)findViewById(R.id.textView1);
            score.setText("Score:"+counter);

            ObjectAnimator anim = ObjectAnimator.ofFloat(imagebutton1, "translationX", 100f, 100f);


            anim.setDuration(3600);
            anim.start();;
            anim.setInterpolator(new AccelerateDecelerateInterpolator());
            anim.setRepeatMode(Animation.REVERSE);
            anim.setRepeatCount(5);`

3 个答案:

答案 0 :(得分:1)

首先获取屏幕宽度,这可能会限制你可以translate X

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;

包含Random()以从屏幕的最大宽度获取随机翻译。

Random r = new Random();
int translationX = r.nextInt(width)

在翻译视图时使用这些随机生成。

public void onClick(View v) {
       ...
        ObjectAnimator anim = ObjectAnimator.ofFloat(imagebutton1, translationX, 100f, 100f);
 }

在屏幕上翻译视图。

您可以使用getLeft()getRight()getTop()getBottom()获取查看当前位置。使用这些组合来获取视图当前位置并从当前位置转换到屏幕内的新随机位置。

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;
int height = displaymetrics.heightPixels;

Random r = new Random();
int translationX = r.nextInt(width);
int translationY = r.nextInt(height)

TranslateAnimation anim = new TranslateAnimation( currentX, translationX , currentY, translationY ); //Use current view position instead of `currentX` and `currentY`
anim.setDuration(1000);
anim.setFillAfter(true);

View上应用动画,您可以按照计划时间间隔使用处理程序发布动画。

 view.startAnimation(anim);

答案 1 :(得分:0)

Random rand = new Random();

int  n = rand.nextInt(50) + 1;

其中nextInt值是最大值,所以在本例中它是1-50

答案 2 :(得分:0)

首先,导入类

import java.util.Random;

然后创建一个随机数发生器:

Random r = new Random();

然后使用各种next ...方法调用randomizer。例如,

int locX = r.nextInt(600) + 50;
int locY = r.nextInt(1024) + 50;

随机数发生器创建一个0到1范围内的伪随机数(包括0,但不包括1)。当您调用nextFloat或nextInt方法时,它会将此随机数乘以参数,然后将结果强制转换为适当的类型。

http://developer.android.com/reference/java/util/Random.html

查看随机数发生器的详细信息