Android - изменение альфа-значения элемента LayerDrawable, вызванного событием onClick - PullRequest
1 голос
/ 25 декабря 2011

вопрос новичка.

Я пытаюсь изменить alpha value из bitmap item внутри layer-list.

my drawable xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/img_btn" android:gravity="center"/>
    </item>
    <item>
        <bitmap android:src="@drawable/image_frame" android:gravity="center"/>
    </item>
</layer-list>

my MainActivity выглядит следующим образом:

public class MainActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MainApp.show(this);
        addListeners();
        changeAlpha(128);
    }

    private void changeAlpha(int opc){
        ImageView img = (ImageView) findViewById(R.id.img_A);
        LayerDrawable layer = (LayerDrawable) img.getDrawable();
        BitmapDrawable bg = (BitmapDrawable) layer.getDrawable(0);
        bg.setAlpha(opc);
    }

    private void addListeners() {
        ImageView img = (ImageView) findViewById(R.id.img_A);

        View.OnClickListener imageAClickListener = new View.OnClickListener() {
            public void onClick(View view) {
                changeAlpha(255);
            }
        };

        img.setOnClickListener(imageAClickListener);
    }

    public void onBackPressed() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(Definitions.CONFIRM_EXIT)
                .setCancelable(false)
                .setPositiveButton(Definitions.YES, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        MainActivity.this.finish();
                    }
                })
                .setNegativeButton(Definitions.NO, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }
}

первый вызов changeAlpha (из onCreate) работает просто отлично, но когда я вызываю метод из события click, он ничего не делает (без сбоев)

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

попробуйте добавить

img.invalidate();

до последней строки вашего метода changeAlpha ().

1 голос
/ 12 октября 2017

в некоторых случаях вы должны позвонить img.setImageDrawable(layer), это приведет к перерисовке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...