首先说说我认识到的enum的优点
1,单例模式的简单实现
2,可以用来描述对象的标记、状态,对外提供方法
下面用一个示例来演示enum的用法,这个enum用来表示一个应用的三个Tab页,对外提供获取当前tab页的资源ID的方法
定义enum
/**
* 标签页类型
* LAST 最近
* HOT 最火
* LOOK 随便看看
*/
enum BarType{
LAST,HOT,LOOK;
/**
* 获取当前标签的资源id
* @return 当前标签资源ID
*/
public int getResourceId(){
if (this==LAST) {
return R.drawable.main_title_bar_tab_last;
}else if(this==HOT){
return R.drawable.main_title_bar_tab_hot;
}else if(this==LOOK){
return R.drawable.main_title_bar_tab_look;
}
return 0;
}
}
使用enum
<pre class="java" name="code">private BarType mCurrentTab = BarType.LAST;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化标签页
changeTagUI(BarType.LAST);
}
private void changeTagUI(BarType tabType) {
mCurrentTab = tabType;
//设置背景资源
mMainTabView.setBackgroundResource(mCurrentTab.getResourceId());
//判断是否是当前显示的标签类型
mBarLast.setTextColor(tabType.equals(BarType.LAST) ? mSelectColor : mUnSelectColor);
mBarHot.setTextColor(tabType.equals(BarType.HOT) ? mSelectColor : mUnSelectColor);
mBarLook.setTextColor(tabType.equals(BarType.LOOK) ? mSelectColor : mUnSelectColor);
}
<span style="font-family:Arial;BACKGROUND-COLOR: #ffffff">enum可以用来表示一个标签页的状态,还可以得到这个状态对应的资源图片ID,用起来是不是很方便?以后有其他用法,继续更新本文。</span>