3 つのビューを含めるように定義された RelativeLayout (垂直) があります。上部ビューと下部ビューの高さは 16 ピクセルで、テキストが表示されます。中央のビューには、ゲーム アプリケーションのグラフィックが表示されます。
ゲーム プレイ中のさまざまな時点で、アプリは中央のビューを効果的に上下に「スクロール」する TranslateAnimation を実行します。これにより、ゲーム内のゲーム キャラクターが中央ビューの「中央」に維持されます。
私の問題は、アニメーションが実行されると、翻訳によって上部または下部のビューが上書きされることです。これは、アニメーションの間だけ持続します。アニメーションが完了すると、すべて問題なく、上部/下部ビューに期待どおりのテキストが表示されます。私が驚いたのは、翻訳アニメーションが、それが実行されている (中央の) ビューの外にコンテンツを表示することです。私の望みは、翻訳がディスプレイを上下にスライドさせるときに、アニメーションが中央のビューにのみ影響し、上部または下部のビューのコンテンツを不明瞭にしないことです。
以下は、レイアウトを作成するために使用しているコードです。カスタム ビューは View から直接派生し、 onDraw(Canvas) メソッドでコンテンツを表示します。
RelativeLayout rl = new RelativeLayout(this);
topView = new MyTextView(this);
topView.setId(1);
middleView = new MyGameView(this);
middleView.setId(2);
bottomView = new MyTextView(this);
bottomView.setId(3);
final int textSize = 16;
RelativeLayout.LayoutParams lpTop = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, textSize);
lpTop.addRule(RelativeLayout.ALIGN_PARENT_TOP);
RelativeLayout.LayoutParams lpBottom = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, textSize);
lpBottom.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
RelativeLayout.LayoutParams lpMiddle = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
lpMiddle.addRule(RelativeLayout.BELOW, 1);
lpMiddle.addRule(RelativeLayout.ABOVE, 3);
rl.addView(topView, lpTop);
rl.addView(middleView, lpMiddle);
rl.addView(bottomView, lpBottom);
setContentView(rl);
アニメーションを起動する middleView のコードは次のとおりです。
TranslateAnimation ta = new TranslateAnimation(0, 0, 0, yDistance);
ta.setDuration(500);
startAnimation(ta);
このアニメーションを希望どおりに動作させるために多くのことを試みましたが、そうすることができませんでした。うまくいけば、誰かが助けてくれるでしょう。前もって感謝します。