Android:替代setVisibility在屏幕上显示图像

时间:2012-02-29 00:59:49

标签: android android-layout visibility

首先,我是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布局。我将所有这些图像视图叠加在一起,很难看出它们的外观,因为它只是一团糟。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

http://developer.android.com/reference/android/widget/ViewFlipper.html会让您更容易管理,而不会出现这种不守规矩的代码。

答案 1 :(得分:0)

如果您尝试在多个视图之间切换,建议使用ViewFlipper可能会有所帮助。但是,如果您真的只是更改图像而不需要更改布局而不是创建大量视图,我只需在ImageView上设置图像(我假设picXX是{{ 1}})。您可以将ID存储在一个或两个数组中,然后从那里获取它们。类似的东西:

ImageViews

然后:

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