6

質問に続いて: Android でビューの背景色の変更をアニメーション化する私は TextView を作成して、TransitionDrawableリソースを介して 2 つの背景の間でフェードさせようとしています。私の移行 xml ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gray_bar" />
    <item android:drawable="@drawable/green_bar" />
</transition>

そして、実行時にバックグラウンドとして設定しようとします:

TextView answerBox = (TextView) findViewById(R.id.answerBox);
answerBox.setBackgroundResource(R.drawable.correct_transition);
TransitionDrawable transition = (TransitionDrawable) answerBox.getBackground();
transition.startTransition(1500);

その結果、テキストビューは次のように変換されます。

gray_bar 背景のテキストビュー これに: green_bar 背景のテキストビュー

灰色のバー全体を緑色のバーに変換する必要がある場合。

どちらも9パッチのpng画像です。これらはオリジナルです:

gray_bar green_bar

私の推測では、緑色のバーが灰色のバー内のテキストに使用できるスペースを埋めているのですが、その理由はわかりません。手がかりはありますか?グレーのものも必要以上に大きく見えますが、含まれる画像の外観にもかかわらず、移行前、移行中、移行後にサイズが変わりません。これは、9 パッチ イメージの問題である可能性があります。これは、通常のイメージをテストしたところ、トランジションがうまく機能したためです。

助けてくれてありがとう!

4

1 に答える 1

0

緑色のバーが灰色のバーのスペースを占有しないという問題を再現できました。これを修正するには、灰色のバーの 9 パッチを使用して、下部と右側の線を角から 1 ピクセル離れた位置まで延長します。

余談ですが、9-patch のもう 1 つの潜在的な問題は、コンテンツの高さが高くなると、画像が垂直方向に伸びるときに視覚的なアーティファクトが発生することです。これは、画像の左側にある黒いバーの高さの結果であり、9 パッチのどの部分を伸ばすかを決定します。これらの 9 個のパッチをさらに改善するには、左側の黒い線を左端の中央の 1 ピクセルだけに減らします。1 つのピクセルのみが伸縮可能としてマークされているため、ドローアブルの高さが増加した場合に、鮮明な垂直エッジが得られるはずです。

レイアウト コードを含めていただければ、その他のサイズに関する問題を解決できる可能性があります。

于 2015-05-02T05:36:48.360 に答える