最开始学习Android的时候
大多数的视频都没有触及到BaseActivity的使用
很多具有相同元素的界面都要自己手写
虽说多写几遍,可以慢慢的熟悉代码
但是真正开发的时候代码还是显得很冗余
这时候BaseActivity的重要性就凸显出来了
举个例子
比如这两张图,他们内容不一样
但是他们都有相似的顶部
这个顶部是我自定义的ActionBar
一般流程是每新建一个这样的页面都要经历导入自定义ActionBar--findViewById--设置内容--设置点击事件
当这样的页面很多时就要写很多次一样的代码
到底一个类一大段一大段的冗余代码
我在这里使用了BaseActivity
/**
* 基类Activity
*
* @author stanny
*
*/
public class BaseActivity extends Activity implements OnClickListener{
private View actionbar_view;
private ImageView base_img;
private TextView base_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//带有顶部自定义actionbar
public void setActionBar(boolean bool){
// 自定义Actionbar
final ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.my_actionbar);// 导入自定义界面
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);// 全屏
actionbar_view = actionBar.getCustomView();
}
//加入到activity队列
public void addActivity(Activity activity){
SysApplication.getInstance().addActivity(this);
}
//获得左侧图片
public ImageView getLeftImg() {
return (ImageView) actionbar_view.findViewById(R.id.ab_left_btn);
}
//获得右侧图片
public ImageView getRightImg() {
return (ImageView) actionbar_view.findViewById(R.id.ab_right_btn);
}
//获得中央文字
public TextView getMidText() {
return (TextView) actionbar_view.findViewById(R.id.ab_mid_text);
}
//隐藏左侧图片
public void hideLeftImg() {
base_img = getLeftImg();
base_img.setVisibility(View.INVISIBLE);
}
//隐藏右侧图片
public void hideRightImg() {
base_img = getRightImg();
base_img.setVisibility(View.INVISIBLE);
}
//隐藏中央文本
public void hideMidText() {
TextView mid_text = getMidText();
mid_text.setVisibility(View.INVISIBLE);
}
//设置左侧背景图
public void setLeftImgBG(int resId) {
base_img = getLeftImg();
base_img.setBackgroundResource(resId);
}
//设置右侧背景图
public void setRightImgBG(int resId) {
base_img = getRightImg();
base_img.setBackgroundResource(resId);
}
//设置中央文本
public void setMidText(String text) {
base_text = getMidText();
base_text.setText(text);
TextPaint textPaint = base_text.getPaint();
textPaint.setFakeBoldText(true);
}
//点击事件
@Override
public void onClick(View view) {
}
}
简单的BaseActivity差不多就这样了
然后让有同样顶部的Activity去继承BaseActivity
/**
* 注册界面
*
* @author stanny
*
*/
public class Register_Act extends BaseActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_register);
initview();
}
/**
* 初始化
*/
private void initview() {
setActionBar(true);//带有顶部自定义actionbar
addActivity(this);// 加入到界面列表
setMidText("注 册 账 号");//设置中央文本
hideRightImg();//隐藏左侧图标
getLeftImg().setOnClickListener(this);
}
/**
* 点击事件
*/
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.ab_left_btn:
finish();
break;
default:
break;
}
}
}
可以明显看到
setActionBar(true);//带有顶部自定义actionbar
addActivity(this);// 加入到界面列表
setMidText("注 册 账 号");//设置中央文本
hideRightImg();//隐藏左侧图标
这样的四句话就代替原本需要十多二十行才能解决的问题
这样十多个相同界面做下来,节省的就多了去了
同时需要进行改动的时候只需要在一个类中更改就可以了
希望对大家有帮助