BaseActivity结合toolbar的简单使用和封装

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/fzkf9225/article/details/79556927

toolbar就不做过多的解释了,想必网上已经很多了,最近事情不多就写了个baseactivity+toolbar的封装,避免每次创建activity都写过多的冗长的代码,也可以避免每个activity都要include一下标题栏布局文件。直接上baseActivity代码,代码不多也有注释就不做过多解释了

package com.qingsui.toolbar;

import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;

/**
 * Created by 青穗 on 2017/7/31.
 * BaseActivity封装
 */

public abstract class BaseActivity extends AppCompatActivity {

    private LayoutInflater inflater;
    public static boolean hasToolBar = true;
    private Toolbar mToolbar;
    private TextView tvTitle;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        inflater=LayoutInflater.from(this);
        hasToolBar = hasToolBar();
        //设置布局
        setContentView(intiLayout());
        if(hasToolBar)
            initToolBar();
        //初始化控件
        initView();
        //设置数据
        initData();
    }

    private void  initToolBar(){
        mToolbar = (Toolbar) findViewById(R.id.main_bar);
        tvTitle = (TextView) findViewById(R.id.tv_title);
        tvTitle.setText(setTitleBar());
        mToolbar.setNavigationIcon(R.mipmap.icon_fh1);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
    @Override
    public void setContentView(@LayoutRes int layoutResID) {
        super.setContentView(layoutResID);
        if(hasToolBar){
            super.setContentView(R.layout.activity_main);
            FrameLayout frameLayout= (FrameLayout) findViewById(R.id.container);
            inflater.inflate(layoutResID,frameLayout,true);
        }else{
            super.setContentView(layoutResID);
        }
    }
    protected boolean hasToolBar(){
        return true;
    }
    public abstract String setTitleBar();

    /**
     * 设置布局
     *
     * @return
     */
    public abstract int intiLayout();

    /**
     * 初始化布局
     */
    public abstract void initView();

    /**
     * 设置数据
     */
    public abstract void initData();

    /**
     * [防止快速点击]
     * @return
     */
    public boolean fastClick() {
        long lastClick = 0;
        if (System.currentTimeMillis() - lastClick <= 1000) {
            return false;
        }
        lastClick = System.currentTimeMillis();
        return true;
    }


}
然后在activity中这样使用

package com.qingsui.toolbar;

import android.widget.TextView;

public class MainActivity extends BaseActivity {
    private TextView tvText;
    @Override
    public String setTitleBar() {
        return "主页";
    }

    @Override
    public int intiLayout() {
        return R.layout.index;
    }

    @Override
    public void initView() {
        tvText = (TextView) findViewById(R.id.tv_text);
    }

    @Override
    public void initData() {
        tvText.setText("这特么是我瞎编的一句话");
    }

    /**
     *  不重写则默认显示 toolbar
     * @return 默认为true即显示toolbar,false则不显示
     */
    @Override
    protected boolean hasToolBar() {
        return super.hasToolBar();
    }
//    private Toolbar mToolbar;
//    private TextView tvTitle;

//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
//        mToolbar = (Toolbar) findViewById(R.id.main_bar);
//        tvTitle = (TextView) findViewById(R.id.tv_title);
//        tvTitle.setText("主页");
////        mToolbar.setSubtitle("副标题");
////        //应用logo
////        mToolbar.setLogo(R.drawable.logo);
//        //左上角的菜单图标
//        mToolbar.setNavigationIcon(R.mipmap.icon_fh1);
//        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                finish();
//            }
//        });
//        //设置右侧菜单
//        mToolbar.inflateMenu(R.menu.toolbar_menu);
////        菜单的点击事件
//        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
//            @Override
//            public boolean onMenuItemClick(MenuItem item) {
//                switch (item.getItemId()){
//                    case R.id.toolbar_menu_1:
//                        Toast.makeText(MainActivity.this,"菜单1",Toast.LENGTH_SHORT).show();
//                        break;
//                    case R.id.toolbar_menu_2:
//                        Toast.makeText(MainActivity.this,"菜单2",Toast.LENGTH_SHORT).show();
//                        break;
//                }
//                return false;
//            }
//        });
//    }
}
附上demo下载地址 https://download.csdn.net/download/fzkf9225/10286649

猜你喜欢

转载自blog.csdn.net/fzkf9225/article/details/79556927