代码中尽量使用抽象的控件对象
比如一个Button对象,设置了一个OnClick的监听。我们可以在代码中转成View对象。这样以后就算这个Button改成ImageView或者TextView,都不需要更改代码
//虽然是一个Button对象,但是我们转换成View对象 //就算以后这个对象改成TextView等都不需要修改现在的代码 View btn = (View) findViewById(R.id.button1); btnListener = new ButtonOnClickListener(); btn.setOnClickListener(btnListener);
能用资源文件表示的逻辑就尽量不要用代码来实现
例如,我们经常会使用到的背景图片切换,我们可以使用xml来实现
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/red" android:state_enabled="true" android:state_focused="true"/> </selector>
降低界面的复杂性
尽量采用XML来表示界面的简单逻辑,避免使用大量的代码来实现
在控件的观察者对象中避免放置直接的实现代码
package com.example.test.com; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Toast; public class MainActivity extends Activity { private ButtonOnClickListener btnListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); //虽然是一个Button对象,但是我们转换成View对象 //就算以后这个对象改成TextView等都不需要修改现在的代码 View btn = (View) findViewById(R.id.button1); btnListener = new ButtonOnClickListener(); //我们将OnClickListener的代码独立成内部类来实现,降低耦合,增强代码的可读性和可维护性 btn.setOnClickListener(btnListener); } class ButtonOnClickListener implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(getBaseContext(), "YES!", Toast.LENGTH_SHORT).show(); } } }