2

Android アプリケーションにはかなりの数のボタンがあり、タッチ イベントを処理するために別のクラスを作成したいと考えています。

そこで、次のクラスを作成しました。

public class OnTouchButtonEffects implements OnTouchListener{

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN)                        
            v.setBackgroundResource(R.drawable.buttonbluepress);
        else if(event.getAction() == MotionEvent.ACTION_UP)
            v.setBackgroundResource(R.drawable.buttonblue);
    }
}

次に、バックグラウンド リソースを取得して「press」を追加し、それをバックグラウンド リソースとして設定し、それがバックグラウンド リソースである場合view vは、リソース名から「press」を削除し、それを新しいバックグラウンド リソースとして設定します。 .event ACTION_DOWNevent ACTION_UP

使用してみgetResources()ましたが、正確にどのように行うのかわかりませんでした。

問題は、バックグラウンド リソースの名前を取得し、その名前に追加/削除する方法です。

4

2 に答える 2

1

あなたが求めている方法でリソース アドレス (つまり、R.id.nameOfResourse) を操作できるとは思えません。

あなたが達成しようとしていることはわかりました。カスタマイズされたボタンを使用するより簡単な方法があります。

StateListDrawable http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/buttonbluepress" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/buttonblue" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/buttonblue" /> <!-- hovered -->
    <item android:drawable="@drawable/buttonblue" /> <!-- default -->
</selector>
于 2013-03-31T14:45:08.407 に答える