Rotateanimationのアニメーションが起動時のときはアニメーションが実行されるのにonClickLitnerでのボタンタップ時にはアニメーションが実行されない
java
1 2package com.example.test; 3 4import 5 androidx.appcompat.app.AppCompatActivity; 6 7import android.graphics.Canvas; 8import android.graphics.Color; 9import android.graphics.Point; 10import android.os.Bundle; 11import android.util.Log; 12import android.view.ViewGroup; 13import android.view.animation.Animation; 14import android.view.animation.RotateAnimation; 15import android.widget.Button; 16import android.widget.LinearLayout; 17import android.widget.TextView; 18 19 20public class MainActivity extends AppCompatActivity { 21 MyView myView; 22 Button btn; 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 LinearLayout main=new LinearLayout(this); 27 LinearLayout.LayoutParams mainparam=new 28 LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 29 ViewGroup.LayoutParams.MATCH_PARENT); 30 31 main.setLayoutParams(mainparam); 32 main.setBackgroundColor(Color.WHITE); 33 main.setOrientation(LinearLayout.VERTICAL); 34 35 LinearLayout.LayoutParams btnparam=new 36 LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 37 ViewGroup.LayoutParams.MATCH_PARENT,1.0f); 38 39 myView = new MyView(this); 40 myView.setLayoutParams(btnparam); 41 42 btn=new Button(this); 43 btn.setLayoutParams(btnparam); 44 btn.setText(R.string.text4); 45 btn.setBackgroundColor(Color.BLACK); 46 47 btn.setOnClickListener(v->{ 48 this.tap(); 49 }); 50 main.addView(myView); 51 main.addView(btn); 52 setContentView(main); 53 } 54 void tap(){ 55 RotateAnimation ani =new RotateAnimation(0.0f,20000.0f, 56 Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); 57 ani.setDuration(5000); 58 ani.setRepeatCount(0); 59 ani.setFillAfter(true); 60 myView.setAnimation(ani); 61 } 62}
環境:Androidstdio
実装や設定次第では
この内容だけで他者に答えろって無理です。
コードをついかしたのでよろしくお願いします
setAnimation じゃなくて startAnimation では。ちなみに、20000 度回転させるとすごいことに…。
解決しました!ありがとうございます
やはりまずいですかね?繰り返しだと挙動がカクカクして微妙だったのでこうしたのですが
別にまずくはないですが、何をしたいかによるでしょうね。あと、デフォルトでは ease-in ease-out がかかってるようなので、例えば 360 度回転を 5 回と、5 * 360 度回転を 1 回では全然違うアニメーションになりますね。
なるほどありがとうございます。
回答1件
あなたの回答
tips
プレビュー