改善交换图像代码

时间:2013-11-18 14:42:24

标签: android

有没有办法让这段代码更简单?似乎在重复 该代码用于两个ImageViews交换和更改外观onClick,同时更改一些标签。 谢谢!

public void imgChangeUnit(View v) { 
    TextView lbl_unT = (TextView) findViewById(R.id.unT);
    TextView lbl_unOD = (TextView) findViewById(R.id.unOD);
    TextView lbl_unID = (TextView) findViewById(R.id.unID);
    TextView lbl_unit_res = (TextView) findViewById(R.id.lbl_unit_res);
    ImageView myImg_mm = (ImageView)findViewById(R.id.imgMetric);
     ImageView myImg_in = (ImageView)findViewById(R.id.imgImperial);

if (isUnit(lbl_unit_res)) {
    lbl_unT.setText("inch");
    lbl_unOD.setText("inch");
    lbl_unID.setText("inch");
    lbl_unit_res.setText("Feet");               

    myImg_in.setImageDrawable(getResources().getDrawable(R.drawable.img_but_imperial_on));
    myImg_mm.setImageDrawable(getResources().getDrawable(R.drawable.img_but_metric_off));   

    } else {
    lbl_unT.setText("mm");
    lbl_unOD.setText("mm");
    lbl_unID.setText("mm");
    lbl_unit_res.setText("Meters"); 

    myImg_mm.setImageDrawable(getResources().getDrawable(R.drawable.img_but_metric_on));
    myImg_in.setImageDrawable(getResources().getDrawable(R.drawable.img_but_imperial_off));
    }
}

1 个答案:

答案 0 :(得分:0)

这看起来好一点了。 至少你不再有可变的重复。

您可能想要创建类似setToImperial()和setToMetric()的方法,它们将知道要获取和设置的内容。 它甚至会更好。

另外,请注意,您不应该在Android中对Strings进行硬编码,而是使用string resources file

public void imgChangeUnit(View v) {

    TextView lbl_unT = (TextView) findViewById(R.id.unT);
    TextView lbl_unOD = (TextView) findViewById(R.id.unOD);
    TextView lbl_unID = (TextView) findViewById(R.id.unID);
    TextView lbl_unit_res = (TextView) findViewById(R.id.lbl_unit_res);
    ImageView myImg_mm = (ImageView)findViewById(R.id.imgMetric);
    ImageView myImg_in = (ImageView)findViewById(R.id.imgImperial);

    String unit;
    String unit2;
    Drawable d1;
    Drawable d2;
    if (isUnit(lbl_unit_res)) {
        unit = "inch";
        unit2 = "Feet";

        d1 = getResources().getDrawable(R.drawable.img_but_imperial_on);
        d2 = getResources().getDrawable(R.drawable.img_but_metric_off);

    } 
    else {
        unit = "mm";
        unit2 = "Meters";

        d1 = getResources().getDrawable(R.drawable.img_but_metric_on);
        d2 = getResources().getDrawable(R.drawable.img_but_imperial_off);
    }


    lbl_unT.setText(unit);
    lbl_unOD.setText(unit);
    lbl_unID.setText(unit);
    lbl_unit_res.setText(unit2);     

    myImg_mm.setImageDrawable(d1);
    myImg_in.setImageDrawable(d2);
}