質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

702閲覧

ビューアニメーションで動いている途中のImageViewのhorizontalbiasを取得したい

aruko

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/12/03 07:25

ビューアニメーションで動いている途中の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>

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/12/03 09:10

> アニメーションで実際動いているときは、もしかしたら、動いているように見せかけているだけで、ImageView自体の色々な設定は変わらないのでしょうか ビューアニメーションは見せかけだけですが、プロパティアニメーションはそうではないとされていますので、実際にプロパティは変更されていると思います。[プロパティ アニメーションとビュー アニメーションの違い](https://developer.android.com/guide/topics/graphics/prop-animation?hl=ja#property-vs-view ) ですが、今回の場合「horizontalbias が変更されてアニメーションしている」というのは何処からの情報でしょうか。
aruko

2021/12/04 07:03

「horizontaibiasが変更されてアニメーションしている」とは、ImageViewが動くのでそうだと自分で思ったことです。 プロパティアニメーションは、プロパティを変えてアニメーションすると書いてあったので、プロパティアニメーションで行ってみましたが、それでもhorizontalbiasは0.0のままでした。 なので、今度は画面サイズを取得して、とりあえずその長さから考える方法で行ってみることにしました。
jimbe

2021/12/04 10:32

View の配置に関係するプロパティが他にもあると思いますし、 ConstraintLayout でしか意味の無い horizontalbias だけを使うとしたら、他のレイアウトに配置した View はアニメーション出来なくなるでしょう。 多種のレイアウトで動作するようにするために「このレイアウトの場合はこれを使って、あのレイアウトの場合はあれを…」と個別に対応する形では、レイアウトマネージャが増える度に常に修正し続けなければならなくなり、果てはユーザが自作したマネージャには対応できない等の問題があります。 ですので、もっと根本的な部分でアニメーションに対応させていると思います。 もしアニメーションさせようとしている部分がイメージだけで出来ているのでしたら、ゲーム等のようにプログラムで直接イメージを描画するほうが簡単になる「かも」しれません。
aruko

2021/12/04 12:12

jimbeさん、質問に対していつも対応してくださり、本当に有難く思っています。 以前、メディアトラッカーで画像を読み取り、ピクセルグラバーでピクセルに分解して、変化させたピクセル情報を組み立ててオフスクリーンに描画し、threadでアニメーションさせることをしていたので、最終手段はそれかなと思っていますが、Viewを多く扱うスマホアプリでは、きっと扱い方に違いがあったり便利な方法があったりするだろうと思って質問させてもらっています。 とりあえず、画像サイズ取得の方向から考えてやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問