40

I have an imageview on which I have set a bitmap fetched from an url. On the imageview I have set an onClickListener which opens up a dialog.

I want to somehow change the tint (make it darker) when the imageview is pressed upon to provide a sort of button click like feel.

What do you suggest?

4

5 に答える 5

8

1 つの方法は、ボタンが押されたときの色合いを含むaColorFilterと aの組み合わせを使用することです。ColorStateListres/color ディレクトリの xml は次のColorStateListようになります。

button_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="@color/pressed_color"/>
    <item android:color="#00000000"/>

</selector>

@color/pressed_colorあなたの色合いはどこにありますか(部分的に透明でなければなりません)。次に、ImageViewサブクラスで、をオーバーライドして色を適用しますdrawableStateChanged()

@Override
protected void drawableStateChanged() {
    super.drawableStateChanged();

    ColorStateList list = getResources().getColorStateList(R.color.button_pressed);
    int color = list.getColorForState(getDrawableState(), Color.TRANSPARENT);
    setColorFilter(color);
    invalidate();
}

ボタンの状態が変化するたびに、このコードが呼び出され、適切な色合いが自動的に設定されます。

于 2012-06-19T06:27:21.530 に答える
0

テストする必要がありますが、その動作を持つxmlをImageViewドローアブルとして設定し、ビットマップをImageView背景として設定できるはずです。

于 2012-06-19T06:05:10.403 に答える
0

onClickイベントでsetAlpha(180)を使用すると、画像が暗くなり、クリックまたはタッチされたというフィードバックがユーザーに与えられます。

final ImageView myImage = (ImageView) findViewById(R.id.ivDocument);
myImage.setImage...(... your image ...); // load your ImageView
myImage.setClickable(true);
myImage.setFocusable(true);
myImage.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        myImage.setAlpha(180);
        doWhateverYouWantHere(v);
    }
});

XML レイアウトに関しては、特別なことは何もありません。

于 2012-10-08T18:19:44.680 に答える