Как использовать ViewFlipper (или) ViewSwitcher и TextSwitcher в одном действии ..? - PullRequest
0 голосов
/ 20 февраля 2012

Я новичок в разработке Android. Я могу реализовать textSwitcher и ViewSwitcher, но индивидуально в деятельности. Я хочу, чтобы они работали в одной и той же деятельности.

Этот код не выдает мне ошибки в IDE, но вызывает принудительное закрытие в эмуляторе.

Код после импорта и все ..

ViewFlipper vS1,vS2,vS3;
Button onep,twop,lose,win,help,settings,start,pick1,pick2;
int condn,total,max=5,min=1,rem;
TextSwitcher minte,maxte,select1,select2,coinsrem;

@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // Animations

    Animation in = AnimationUtils.loadAnimation(this,
            android.R.anim.slide_in_left);
    Animation out = AnimationUtils.loadAnimation(this,
            android.R.anim.slide_out_right);

//  Text Views ----
    minte.findViewById(R.id.min);
    maxte.findViewById(R.id.max);

   minte.setFactory(new TextSwitcherFactory());
   maxte.setFactory(new TextSwitcherFactory());

   minte.setText("Hello");

     // switching Views ----

    vS1 =(ViewFlipper) findViewById(R.id.vs1);
    vS2 =(ViewFlipper) findViewById(R.id.vs2);
    vS3 =(ViewFlipper) findViewById(R.id.vs3);

    vS1.setInAnimation(in);
    vS1.setOutAnimation(out);
    vS2.setInAnimation(in);
    vS2.setOutAnimation(out);
    vS3.setInAnimation(in);
    vS3.setOutAnimation(out);

 // create RangeSeekBar as Integer range between 20 and 75
    RangeSeekBar<Integer> seekBar = new RangeSeekBar<Integer>(20, 75, getBaseContext());
    seekBar.setOnRangeSeekBarChangeListener(this);

    // add RangeSeekBar to pre-defined layout
    ViewGroup layout = (ViewGroup) findViewById(R.id.rangeseek);
    layout.addView(seekBar);

    //----buttons-------------------------

    win = (Button)findViewById(R.id.win);
    lose = (Button)findViewById(R.id.loses);

    win.setOnClickListener(this);
    lose.setOnClickListener(this);

    //----buttons end----------------------
    //---Animating the views---



}







@Override
public void rangeSeekBarValuesChanged(Integer minValue, Integer maxValue) {
    // TODO Auto-generated method stub

}







public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId())
    {

    case R.id.win:
        condn = 1;
        vS2.showNext();

        break;
    case R.id.loses :
        condn =0;
        vS2.showNext();

        break;



    }
}

public class TextSwitcherFactory implements ViewSwitcher.ViewFactory{

    @Override
    public View makeView() {
        // TODO Auto-generated method stub
        TextView t = new TextView(LastActivity.this);
        t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
        t.setTextSize(36);
        t.setTextColor(Color.argb(255, 255, 204, 51));
        return t;       }

}

Ответы [ 2 ]

1 голос
/ 23 февраля 2012
minte.findViewById(R.id.min); 
maxte.findViewById(R.id.max);

не имеет смысла ...

Вы должны инициализировать их как:

minte =(TextSwitcher) findViewById(R.id.min);
0 голосов
/ 19 марта 2012

Похоже, из вашего кода вы пытаетесь инициализировать 3 отдельных ViewFlippers и переключаться между ними. Это не как это сделать. ViewFlipper (или ViewSwitcher) является расширением класса FrameLayout. Таким образом, он покажет только 1 дочерний вид за один раз.

Чтобы исправить ваш код, определите только один ViewFlipper. В соответствии с этим определите 3 вида (т.е. RelativeLayout, LinearLayout и т. Д.), Между которыми вы хотите переключиться.

Кроме того, похоже, что вы тоже пытаетесь сделать анимацию. Таким образом, вы можете использовать класс ViewAnimator вместо этого, который является просто родительским классом ViewFlipper.

Google для некоторых учебных пособий. Там есть несколько хороших.

Надеюсь, это помогло!

...