对Activity的封装

对Activity的封装

public abstract class BaseActivity extends ActionBarActivity implements
        DialogControl, VisibilityControl, View.OnClickListener {
    protected LayoutInflater mInflater;
    private ActionBar mActionBar;
    private TextView mTvActionTitle;

  

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (!hasActionBar()) {
            supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        }
        onBeforeSetContentLayout();
        if (getLayoutId() != 0) {
            setContentView(getLayoutId());
        }
        mActionBar = getSupportActionBar();
        mInflater = getLayoutInflater();
        if (hasActionBar()) {
            initActionBar(mActionBar);
        }
        init(savedInstanceState);
    }


  
    //是否有ActionBar
    protected boolean hasActionBar() {
        return true;
    }

    //布局文件
    protected int getLayoutId() {
        return 0;
    }

    protected View inflateView(int resId) {
        return mInflater.inflate(resId, null);
    }

    //导航标题
    protected int getActionBarTitle() {
        return R.string.app_name;
    }

    //导航标题
    public void setActionBarTitle(String title) {
        if (hasActionBar()) {
            if (mTvActionTitle != null) {
                mTvActionTitle.setText(title);
            }
            mActionBar.setTitle(title);
        }
    }

    //后退按钮
    protected boolean hasBackButton() {
        return false;
    }


    //初始化ActionBar
    protected void initActionBar(ActionBar actionBar) {
        if (actionBar == null)//若原本就通过系统没有获得该ActionBar,则直接进行返回
            return;
        if (hasBackButton()) {//判断是否有后退按钮
            //设置显示方式,
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

            //获取系统自带的Actionbar的layout
            int layoutRes = getActionBarCustomView();

            //若没有,则执行为默认的layout(有后退按钮)
            View view = inflateView(layoutRes == 0 ? R.layout.v2_actionbar_custom_backtitle
                    : layoutRes);

            //找到后退按钮
            View back = view.findViewById(R.id.btn_back);
            if (back == null) {
                throw new IllegalArgumentException(
                        "can not find R.id.btn_back in customView");
            }
            //设置后退按钮的Click事件
            back.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    //关闭当前的Activity
                    onBackPressed();
                }
            });

            //获取title
            mTvActionTitle = (TextView) view
                    .findViewById(R.id.tv_actionbar_title);
            if (mTvActionTitle == null) {
                throw new IllegalArgumentException(
                        "can not find R.id.tv_actionbar_title in customView");
            }
            int titleRes = getActionBarTitle();
            if (titleRes != 0) {
                mTvActionTitle.setText(titleRes);
            }
            //设置布局
            LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.MATCH_PARENT);
            actionBar.setCustomView(view, params);
        } else {
            //若没有后退按钮,则设置显示方式为只显示标题
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);
            actionBar.setDisplayUseLogoEnabled(false);
            int titleRes = getActionBarTitle();
            if (titleRes != 0) {
                //设置标题内容
                actionBar.setTitle(titleRes);
            }
        }
    }

    //titile
    public void setActionBarTitle(int resId) {
        if (resId != 0) {
            setActionBarTitle(getString(resId));
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                break;

            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值