Android: альтернатива setVisibility для отображения изображений на экране - PullRequest
0 голосов
/ 29 февраля 2012

Прежде всего, я очень новичок в Android и учу себя, поэтому я не прошу вас кодировать его для меня.Просто дайте мне некоторые термины, темы или предмет для изучения, и я поразив книги и выясню это.

Я создаю приложение, в котором пользователь задает то, что появляется на экране, нажимая кнопку или выбирая изображение,Единственный способ, которым я знаю, как это сделать - это установить переменную onClickListener и использовать оператор switch для отображения imageView, соответствующего выбранной переменной.

пример:

    //on click listeners set variable userPic1 and userPic2

    switch(userPic1){
    case 1:
        pic11.setVisibility(View.VISIBLE);
        pic12.setVisibility(View.GONE);
        pic13.setVisibility(View.GONE);
        pic14.setVisibility(View.GONE);
        break;
    case 2:
        pic11.setVisibility(View.GONE);
        pic12.setVisibility(View.VISIBLE);
        pic13.setVisibility(View.GONE);
        pic14.setVisibility(View.GONE);
        break;
    case 3:
        pic11.setVisibility(View.GONE);
        pic12.setVisibility(View.GONE);
        pic13.setVisibility(View.VISIBLE);
        pic14.setVisibility(View.GONE);
        break;
    case 4:
        pic11.setVisibility(View.GONE);
        pic12.setVisibility(View.GONE);
        pic13.setVisibility(View.GONE);
        pic14.setVisibility(View.VISIBLE);
        break;
    }


    switch(userPic2){
    case 1:
        pic21.setVisibility(View.VISIBLE);
        pic22.setVisibility(View.GONE);
        pic23.setVisibility(View.GONE);
        pic24.setVisibility(View.GONE);
        break;
    case 2:
        pic21.setVisibility(View.GONE);
        pic22.setVisibility(View.VISIBLE);
        pic23.setVisibility(View.GONE);
        pic24.setVisibility(View.GONE);
        break;
    case 3:
        pic21.setVisibility(View.GONE);
        pic22.setVisibility(View.GONE);
        pic23.setVisibility(View.VISIBLE);
        pic24.setVisibility(View.GONE);
        break;
    case 4:
        pic21.setVisibility(View.GONE);
        pic22.setVisibility(View.GONE);
        pic23.setVisibility(View.GONE);
        pic24.setVisibility(View.VISIBLE);
        break;
    }       
}

Я чувствую, что, возможно, есть лучший способ кодировать это, но большая проблема в моих макетах XML.У меня все эти imageViews сложены друг на друга, и становится трудно понять, как они будут выглядеть, потому что это просто беспорядок.

Любая помощь приветствуется

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Использование ViewFlipper, как предлагается, может помочь, если вы пытаетесь переключаться между многими видами.Однако, если вы действительно просто меняете изображение и вам не нужно менять макет вместо того, чтобы создавать множество просмотров, я просто установил бы изображение на вашем ImageView (я предполагаю, что picXX ImageViews),Вы можете хранить свои идентификаторы в массиве или двух и получать их оттуда.Что-то вроде:

int[] userPics1 = new int[] {R.drawable.pic1, R.drawable.pic2, ... }

, а затем:

ImageView pic = (ImageView)findViewById(R.id.pic);
pic.setImageResource(userPics1[userPic1]);
0 голосов
/ 29 февраля 2012

http://developer.android.com/reference/android/widget/ViewFlipper.html облегчит вам управление без такого неуправляемого кода.

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