您的位置:首页 > 移动开发 > Android开发

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

2018-03-14 17:17 796 查看
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.
4000
* 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息