簡體   English   中英

如何在Android中旋轉圖像並在按下按鈕時隨機停止圖像

[英]How to rotate an image in Android and stop it randomly on button pressed

我試圖在我的android應用程序中做一個簡單的命運之輪。 這將是帶有人名的四舍五入圖像。 按下下方的按鈕,圖像將開始旋轉(圍繞其中心)。 輪播需要在隨機時間后停止,因此其課程名稱不一定總是相同的人。 現在,我只使用下面帶有1-2-3-4的圖像。

輸出示例

我已經看過幾乎所有與此有關的話題,但無法弄清楚如何使其隨機化。 此刻它總是以相同的角度停止,例如總是以1號停止。

我有沙發的代碼:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_who, container, false);


   final ImageView alberto = (ImageView)view.findViewById(R.id.alberto);
    Button spin =(Button)view.findViewById(R.id.spin);

    final RotateAnimation anim = new RotateAnimation(0f,generateRandomNumber(), Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f);
    anim.setFillAfter(true);
    anim.setDuration(1000);


    spin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            alberto.startAnimation(anim);
        }
    });

    return view;
}

public float generateRandomNumber() {

    Random rand = new Random();
    int randomNum = rand.nextInt((360 - 0) + 1);

    return (float)randomNum;
}

}

所以基本上我給RotateAnimation一個隨機數,所以它在停止旋轉的地方並不總是相同的。 但這是行不通的,因為像我說的那樣,它總是在nr 1上停止。 我發現如果我更改動畫的持續時間,輸出將不一樣! 因此,我嘗試在持續時間內輸入一個隨機數,但那也不起作用。順便說一句,我檢查了其他帖子,說它是隨機的,但不是。

在理想情況下,動畫開始快速,然后放慢並停止。

感謝高級分配!!!

您可以嘗試以下方法:

private static final float BASE_ROTATION_DEGREES = 3600;
private static final int DURATION = 1000;

//...

spin.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        float deg = alberto.getRotation() + BASE_ROTATION_DEGREES + ((float)Math.random() * 360F);
        alberto.animate().rotation(deg).setDuration(DURATION)
            .setInterpolator(new AccelerateDecelerateInterpolator());
    }
});

您也可以將插值器更改為其他值以獲得不同的效果。

編輯:編輯以解決僅第一轉超過一轉的問題。 請注意,這意味着旋轉值將很快變高! 不應該提出問題,但值得牢記。

如果您想看一看, 在這里進行 另一個編輯: 示例應用程序/源代碼 這在我的模擬器上運行良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM