Android - кнопка исчезновения изображения при нажатии - PullRequest
1 голос
/ 25 ноября 2011

У меня есть кнопка с изображением в макете и реализована функциональность onclick для того же. Теперь я хочу, чтобы кнопка изображения исчезала во время "при нажатии" . Как сделать затухание изображения программно в Android. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 25 ноября 2011

Вот так (я не проверял, но должен работать), но вам нужно иметь "блеклую" версию ImageButton для рисования.

Bitmap iconOn = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_on);//this should be yours faded button image
Bitmap iconOff = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_off); //and this will be normal image

Drawable iconOnDrawable = new BitmapDrawable(iconOn);
Drawable iconOffDrawable = new BitmapDrawable(iconOff);

StateListDrawable states = new StateListDrawable();
states.addState(new int[] { android.R.attr.state_pressed },iconOnDrawable);
states.addState(new int[] { android.R.attr.state_focused },iconOffDrawable);
states.addState(new int[] { android.R.attr.state_selected },iconOnDrawable);
states.addState(new int[] {}, iconOffDrawable);

ImageButton imageButton = (ImageButton) findViewById(R.id.button);
imageButton.setImageDrawable(states);
1 голос
/ 25 ноября 2011

Вам нужно реализовать анимацию на кнопке. У вас должна быть анимация просмотра с альфа-элементом. Прочитайте это: http://developer.android.com/guide/topics/resources/animation-resource.html, и если вам нужна помощь, пожалуйста, напишите здесь ...

0 голосов
/ 27 мая 2013

Вот как вы это делаете:

Button b = view.findViewById(R.id.button);
   final TransitionDrawable td = new TransitionDrawable(new Drawable[]{new ColorDrawable(0xFFFF0000), new ColorDrawable(0x11FF0000)});
   b.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            //b.setBackgroundColor();
        }
        if(event.getActionMasked() == MotionEvent.ACTION_UP) {
            b.setBackgroundDrawable(td);
            td.startTransition(1000);
        }
        return false;
    }
});
...