3

Android ビューの背景を強制的に再描画する方法はありますか? 背景としてグラデーションを使用して描画可能な形状を設定しましたが、これは正常に機能しますが、ビューの高さを変更すると、これらの醜いグラデーションのステップが表示されます。

私に何ができる?私は試してみましたが、目に見える違いはview.invalidate()ありview.refreshDrawableState()ませんでした。

ありがとうございました!

//編集:ここにいくつかの詳細と私のコードがあります: あなたの答えの後、バンディングは私のおそらく悪いコードの結果だと思います. これが私がやっていることです:

  1. ビューのスケーリング
  2. スケーリングされたビューは他の領域でのユーザー入力を受け入れないため、新しい幅と高さを設定し、「古い」ビューを受け入れます(スケーリング後のコントロールのアンドロイドの奇妙な(少なくとも私にとっては)動作を参照してください/領域全体で入力を受け入れません
  3. 背景を再度設定しようとしています (グラデーションと角の丸い四角形が含まれています)。

これが私のコードです:

public void onAnimationEnd(Animation animation)
{
    MyView view = (MyView) ((ExtendedScaleAnimation) animation).getView();
    view.getLayoutParams().width = toWidth;
    view.getLayoutParams().height = toHeight;
    view.clearAnimation();
    view.requestLayout();
    view.refreshBackground(); // background will be changed
}

デバイスでは、背景のドローアブルが変更されていることがわかりますが、アニメーションが終了する前に背景の変更が適用されたように見えるちらつきがあります。プログラム的には終わったはずです!それとも私が間違っていますか?

ありがとうございました!

4

1 に答える 1

2

サイズ変更後に試すことができますか: v.setBackgroundResource(null); v.setBackgroundResource(...私の描画可能...);

于 2011-01-20T15:03:16.577 に答える