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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1698閲覧

Android TranslateAnimationについて 

TakamasaAwai

総合スコア73

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/08/09 06:58

5つのViewを動かすコードを書いています。

lang

1int[] floorViewIds = { 2 R.id.floorView1, 3 R.id.floorView2, 4 R.id.floorView3, 5 R.id.floorView4, 6 R.id.floorView5, 7 }; 8 View[] floorViews = new View[floorViewIds.length]; 9 10@Override 11 protected void onCreate (Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_game); 14 15 for (int i = 0; i < floorViewIds.length; i++) { 16 floorViews[i] = findViewById(floorViewIds[i]); 17 floorViews[i].setBackgroundResource(br.getRandomColor()); 18 } 19 20 TranslateAnimation translate = new TranslateAnimation(1080, -200, 0, 0); //fromX, toX, fromY, toY 21 translate.setDuration(3000); // 3000msかけてアニメーションする 22 translate.setRepeatCount(10);// アニメーション適用 23 24 for (View floorView : floorViews) { 25 floorView.startAnimation(translate); 26 } 27}

しかし、動き方が下の動画のようになってしまいます。
https://youtu.be/s7D2ExGUSnU
私は連続的に、常に左から流れてくるようにしたいです。Viewの数を増やしてもいいのですが、それでは処理速度が気になるので、できれば避けたいです。どうすれば良いでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず要望通り動けば良いやって感じのソースです

int[] floorViewIds = { R.id.floorView1, R.id.floorView2, R.id.floorView3, R.id.floorView4, R.id.floorView5, }; View[] floorViews = new View[floorViewIds.length]; int now; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); now = 0; for (int i = 0; i < floorViewIds.length; i++) { floorViews[i] = findViewById(floorViewIds[i]); floorViews[i].setVisibility(View.INVISIBLE); floorViews[i].setBackgroundResource(br.getRandomColor()); } // スクリーンサイズ取得 WindowManager wm = getWindowManager(); Display disp = wm.getDefaultDisplay(); Point size = new Point(); disp.getSize(size); final TranslateAnimation translate = new TranslateAnimation(0, size.x, 0, 0); //fromX, toX, fromY, toY translate.setDuration(3000); // 3000msかけてアニメーションする // translate.setRepeatCount(10);// アニメーション適用 floorViews[now].setVisibility(View.VISIBLE); floorViews[now].startAnimation(translate); translate.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { floorViews[now].clearAnimation(); floorViews[now].setVisibility(View.INVISIBLE); now++; if(now >= floorViews.length){ now = 0; } floorViews[now].setVisibility(View.VISIBLE); floorViews[now].startAnimation(translate); } }); // for (View floorView : floorViews) { // floorView.startAnimation(translate); // } }

スクリーンサイズ取得部分は、
動画では右からでしたが
「常に左から流れてくるようにしたい」とあったので
TranslateAnimationの変更の為に取得してます

setVisibilityの部分は、最初のレイアウトが不明なので
綺麗に見せる為に付けてみました

「連続的に、常に左から流れてくるようにしたい」の私の解釈が
TakamasaAwaiさんの意図とあってるかは判りませんが
問題無く動くソースになってます

投稿2015/08/09 07:55

shaha

総合スコア166

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問