ビューアニメーションで動いている途中のImageViewのhorizontalbiasを取得したいです。
ImageViewのhorizontalbiasの取得の仕方は、ここで教えてもらってできましたが、アニメーション中で動いているImageViewのhorizontalbiasが0.0のままで動きません。
アニメーションで実際動いているときは、もしかしたら、動いているように見せかけているだけで、ImageView自体の色々な設定は変わらないのでしょうか。
java
1import android.animation.AnimatorInflater; 2import android.animation.AnimatorSet; 3import android.graphics.Insets; 4import android.os.Bundle; 5import android.os.Handler; 6import android.os.Looper; 7import android.view.*; 8import android.view.animation.Animation; 9import android.view.animation.AnimationUtils; 10import android.widget.ImageView; 11import android.widget.TextView; 12 13import androidx.annotation.*; 14import androidx.constraintlayout.widget.ConstraintLayout; 15import androidx.constraintlayout.widget.ConstraintSet; 16import androidx.fragment.app.Fragment; 17import androidx.lifecycle.ViewModelProvider; 18 19import static tmaruko.okura.jiisan.MainActivity.anim1; 20import static tmaruko.okura.jiisan.MainActivity.anim_idou_migi; 21 22 23public class MainFragment extends Fragment implements Runnable{ 24 TextView frma_tv1; 25 TextView frma_tv2; 26 TextView frma_tv3; 27 TextView frma_tv4; 28 TextView frma_tv5; 29 TextView frma_tv6; 30 TextView frma_tv7; 31 TextView frma_tv8; 32 ImageView kaki1; 33 ImageView saru; 34 int count; 35 Thread thread; 36 float f_saru; 37 ConstraintLayout.LayoutParams layoutparams_saru; 38 39 @Override 40 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 41 return inflater.inflate(R.layout.fragment_main, container, false); 42 } 43 44 @Override 45 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { 46 super.onViewCreated(view, savedInstanceState); 47 48 MainViewModel vm = new ViewModelProvider(requireActivity()).get(MainViewModel.class); 49 thread=new Thread(this); 50 count=0; 51 saru=view.findViewById(R.id.saru); 52 kaki1=view.findViewById(R.id.kaki1); 53 frma_tv1=view.findViewById(R.id.frma_tv1); 54 frma_tv2=view.findViewById(R.id.frma_tv2); 55 frma_tv3=view.findViewById(R.id.frma_tv3); 56 frma_tv4=view.findViewById(R.id.frma_tv4); 57 frma_tv5=view.findViewById(R.id.frma_tv5); 58 frma_tv6=view.findViewById(R.id.frma_tv6); 59 frma_tv7=view.findViewById(R.id.frma_tv7); 60 frma_tv8=view.findViewById(R.id.frma_tv8); 61 62 layoutparams_saru = (ConstraintLayout.LayoutParams)saru.getLayoutParams(); 63 f_saru=layoutparams_saru.horizontalBias; 64 frma_tv7.setText(String.valueOf(f_saru)); 65 frma_tv8.setText("count="+String.valueOf(count)); 66 thread.start(); 67 } 68 69 public void start(){ 70 if(thread==null){ 71 thread=new Thread(this); 72 thread.start(); 73 } 74 } 75 76 public void stop(){ 77 if(thread!=null){thread=null;} 78 } 79 80 public void run() { 81 Thread thisThread=Thread.currentThread(); 82 final Handler mainHandler = new Handler(Looper.getMainLooper()); 83 while (thread!=null){ 84 count++; 85 mainHandler.post(() -> { 86 if(count==5){frma_tv1.startAnimation(anim1);} 87 else if(count==25){frma_tv2.startAnimation(anim1);} 88 else if(count==45){frma_tv3.startAnimation(anim1);} 89 else if(count==65){ 90 frma_tv4.startAnimation(anim1); 91 saru.startAnimation(anim_idou_migi); 92 } 93 else if(count==85){frma_tv5.startAnimation(anim1);} 94 layoutparams_saru = (ConstraintLayout.LayoutParams)saru.getLayoutParams(); 95 f_saru=layoutparams_saru.horizontalBias; 96 frma_tv7.setText(String.valueOf(f_saru)); 97 frma_tv8.setText("count=" + String.valueOf(count)); 98 }); 99 try { 100 thread.sleep(200); 101 } catch (InterruptedException e) { 102 } 103 } 104 } 105}
アニメーション anim_idou_migi.xmlは次のようです。
java
1<?xml version="1.0" encoding="utf-8"?> 2<set xmlns:android="http://schemas.android.com/apk/res/android"> 3 <translate 4 android:fromXDelta="0%p" 5 android:toXDelta="130%p" 6 android:duration="6000"> 7 </translate> 8</set>
よろしくお願いします。
あなたの回答
tips
プレビュー