android imageView

Я хотел бы сделать такую ​​вещь.... Есть относительный макет с заставкой.PNG в качестве фона.... есть пять ImageViews: @drawable\1.png, @drawable\2.png, @drawable\ 3.png, @drawable\4.png и @drawable\5.png...

1-кликабелен и виден; 2-5 - невидимы и кликабельны = "ложь"

щелкнув один раз, Imageview 2 становится видимым, но недоступным для клика, а затем, щелкнув все 2-5, появляется, затем, щелкнув последний пятый раз, 2-5 снова становится невидимым....

Как по мне, такая конструкция работает с одним невидимым ImageView:

    final ImageView iv36 = (ImageView) findViewById(R.id.yabl3skr);
    iv36.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View v33) {
            // TODO Auto-generated method stub

            final ImageView iv37 = (ImageView)findViewById(R.id.yab3);
            iv37.setVisibility(1);
            iv37.setClickable(true);
            iv37.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v33) {
                    // TODO Auto-generated method stub
            iv37.setVisibility(View.GONE);
            iv37.setClickable(false);
                }
            });
        }
    }); 

Нужны какие-нибудь идеи, как это сделать с пятью изображениями?


person timonvlad    schedule 25.01.2012    source источник


Ответы (1)


Я не знаю, полностью ли я это понимаю, но я думаю, что вы говорите, что у вас есть пять ImageView, которые все выполняют условную логику при нажатии. Если это так, то обычно я реализую один OnClickListener для всех изображений. Вы можете установить начальное состояние для всех ваших изображений, а затем переключиться на идентификатор передаваемого представления, чтобы включить и показать, какие представления вы хотите показать.

    final ImageView iv33 = (ImageView) findViewById(R.id.iv33);
    final ImageView iv34 = (ImageView) findViewById(R.id.iv34);
    final ImageView iv35 = (ImageView) findViewById(R.id.iv35);
    final ImageView iv36 = (ImageView) findViewById(R.id.iv36);
    final ImageView iv37 = (ImageView) findViewById(R.id.iv37);

    OnClickListener imageClickListener = new OnClickListener() {

        public void onClick(View v) {

            // Initial state
            iv33.setClickable(false);
            iv34.setClickable(false);
            iv35.setClickable(false);
            iv36.setClickable(false);
            iv37.setClickable(false);

            iv33.setVisibility(View.GONE);
            iv34.setVisibility(View.GONE);
            iv35.setVisibility(View.GONE);
            iv36.setVisibility(View.GONE);
            iv37.setVisibility(View.GONE);

            switch(v.getId())
            {
            case R.id.iv33:
                // show and hide what you would like...
                break;
            case R.id.iv34:
                // show and hide what you would like...
                break;
            case R.id.iv35:
                // show and hide what you would like...
                break;
            case R.id.iv36:
                // show and hide what you would like...
                break;
            case R.id.iv37:
                // show and hide what you would like...
                break;
            }
        }
    };

    iv33.setOnClickListener(imageClickListener);
    iv34.setOnClickListener(imageClickListener);
    iv35.setOnClickListener(imageClickListener);
    iv36.setOnClickListener(imageClickListener);
    iv37.setOnClickListener(imageClickListener);
person Rich    schedule 25.01.2012
comment
Спасибо, я изменил вашу конструкцию, и она отлично работает... Самое главное - начальное состояние настроено в xml в моем проекте, и с этим изменением все работает.... - person timonvlad; 26.01.2012
comment
android:clickable=false android:visibility=ушел - person timonvlad; 26.01.2012