AndroidでImageViewを左から右にスムーズにスライドさせるにはどうすればいいですか? 質問する

AndroidでImageViewを左から右にスムーズにスライドさせるにはどうすればいいですか? 質問する

ImageViewスムーズなアニメーションで画面の左から右にスライドさせる必要があります(ImageView遷移中に が表示されるようにしたい)。次のコードを試しました。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;

camion.animate()
    .translationX(width)
    .setDuration(2000)
    .setInterpolator(new LinearInterpolator())
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            //camion.setVisibility(View.GONE);
        }
    });

動きImageViewはしますが、アニメーションが遅く、思ったようにスムーズではありません。コードのどこが間違っているのでしょうか?

ベストアンサー1

このようなトゥイーンアニメーションの作成は簡単です。以下の手順に従ってください。

ステップ1

animディレクトリ内にディレクトリを作成しres、これを次のように配置します。slide.xml

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

   <translate
        android:fromXDelta="0%p"
        android:toXDelta="75%p"
        android:duration="800" />
</set>

fromXDelta2つの属性とを変更することでアニメーションをカスタマイズできますtoXDelta%pを指す親への敬意これは、親に対して画像を 75% 移動することを意味します。

ステップ2

// Refer the ImageView like this
imageView = (ImageView) findViewById(R.id.img);

// Load the animation like this
animSlide = AnimationUtils.loadAnimation(getApplicationContext(),
                    R.anim.slide);

// Start the animation like this
imageView.startAnimation(animSlide);

setInterpolator()必要に応じて、 および を使用することもできますsetListeners()。ここでは、簡単にするために説明していません。必要な場合は、お知らせください。

注記

あなたが繰り返し述べているように、あなたはアニメーションが遅いこのアニメーションをテストしました3台の実機と2台のエミュレーターでアニメーションは滑らかでしたすべてに。Moto E などのローエンドデバイスから Nexus 5 や Galaxy S6 などのハイエンドデバイスまでテスト済み。

このコードを実行してもまだ遅延が発生する場合は、テスト デバイスに原因があるはずです。コードは完璧です。

アップデート

私もLollipopでMoto Gを動作させて確認しましたが、アニメーションはスムーズに動作しています。これは非常に小さくて軽いアニメーションなので、遅れることはありません。それでも遅れる場合は、テストしているデバイス、またはそのアクティビティ上の他のコードがUIを遅くしたり応答しなくなったりしている可能性があります。

どれが自分に当てはまるか確認してみてください。

  • 合計6台のデバイスでテストしましたが、遅延はまったくありませんでした。そのため、製品版アプリに遅延は発生しません。遅いのはデバイス側だけかもしれません。
  • 次のような重い操作を行う場合ファイル システム、データベース、またはその他の負荷の高い操作にアクセスすると、UI スレッドの速度が低下し、フレームが失われます。AsyncTask重い操作には使用してみてください

おすすめ記事