複数のボタンが同じ背景の Drawable を使用する画面があります。ボタンがタッチされている間に灰色のカラー フィルターを追加する OnTouch リスナーを追加するために、さまざまなプロジェクトで使用する再利用可能なコードがあります。通常は問題なく動作しますが、この場合、いずれかのボタンを押すとすべてのボタンが着色されます。
http://developer.android.com/guide/topics/graphics/2d-graphics.htmlに説明があります:
注: プロジェクト内の各固有のリソースは、インスタンス化するオブジェクトの数に関係なく、1 つの状態のみを維持できます。たとえば、同じ画像リソースから 2 つの Drawable オブジェクトをインスタンス化してから、一方の Drawable のプロパティ (アルファなど) を変更すると、もう一方にも影響します。
推奨される解決策は、TweenAnimation を使用することですが、これはカラー フィルターでは機能しないようです。
また、Android: Cloning a drawable を見て、drawable.getConstantState ().newDrawable() の使用を提案するフィルターを使用して StateListDrawable を作成しました。これは違いがないようです。同じ物理イメージ ファイルが使用されている限り、同じリソースを使用する他の Drawable への変更によって、すべての Drawable が影響を受けると思います。
押された状態を示す 2 番目の背景画像を作成する以外に、どのような解決策がありますか? コードに追加してすべてのプロジェクトで使用できる、単純なプログラム ソリューションがあればいいのですが。