Android快速开发之封装标题栏
16lz
2022-06-17
什么是快速开发?我只需要几行代码就可实现如下效果:
几行代码:
public class MainActivity extends TopBarBaseActivity { @Override protected int getContentView() { return R.layout.activity_main; } @Override protected void init(Bundle saveInstanceState) { setTitle("直播吧"); setTopLeftButton(R.drawable.ic_title_back, new OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"你点击了左上角的图标",Toast.LENGTH_SHORT).show(); } }); setTopRightButton("联系人", R.drawable.ic_mine, new OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"你点击了右上角的图标",Toast.LENGTH_SHORT).show(); } }); }}
第一步:依赖 appcompat-v7;
compile 'com.android.support:appcompat-v7:25.2.0'
第二步:设置 NoActionBar 主题:
第三步:创建 TopBarBaseActivity与其布局文件;
1,封装的TopBarBaseActivity.java
public abstract class TopBarBaseActivity extends AppCompatActivity { private Toolbar toolbar; private FrameLayout viewContent; private TextView mTitle; private int menuId; private String menuStr; private OnClickListener onClickListenerTopLeft; //左边图标的点击事件 private OnClickListener onClickListenerTopRight; //定义接口 public interface OnClickListener { void onClick(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_top_bar_base); toolbar = (Toolbar)findViewById(R.id.toolbar); viewContent = (FrameLayout)findViewById(R.id.view_content); mTitle = (TextView)findViewById(R.id.tv_title); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); LayoutInflater.from(this).inflate(getContentView(),viewContent); init(savedInstanceState); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onClickListenerTopLeft.onClick(); }else if(item.getItemId() == R.id.menu_1) { onClickListenerTopRight.onClick(); } return true; //自己处理点击事件 } @Override public boolean onCreateOptionsMenu(Menu menu) { if (menuId != 0 || !TextUtils.isEmpty(menuStr)) { getMenuInflater().inflate(R.menu.menu_activity_base_top_bar,menu); } return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (menuId != 0) { menu.findItem(R.id.menu_1).setIcon(menuId); } if (!TextUtils.isEmpty(menuStr)) { menu.findItem(R.id.menu_1).setTitle(menuStr); } return super.onPrepareOptionsMenu(menu); } protected void setTopRightButton(String menuStr,OnClickListener rightListener) { this.onClickListenerTopRight = rightListener; this.menuStr = menuStr; } protected void setTopRightButton(String menuStr,int menuId, OnClickListener rightListener) { this.menuStr = menuStr; this.menuId = menuId; this.onClickListenerTopRight = rightListener; } //添加一个方法设置图标资源id和监听器 protected void setTopLeftButton(int iconId,OnClickListener listener) { toolbar.setNavigationIcon(iconId); this.onClickListenerTopLeft = listener; //接口回调 } protected void setTitle(String title) { if (!TextUtils.isEmpty(title)) { mTitle.setText(title); } } protected abstract int getContentView(); protected abstract void init(Bundle saveInstanceState);}
2,activity_top_bar_base.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
3,menu_activity_base_top_bar.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
第四步:如何使用?继承这个TopBarBaseActivity 即可:
public class MainActivity extends TopBarBaseActivity { @Override protected int getContentView() { return R.layout.activity_main; } @Override protected void init(Bundle saveInstanceState) { setTitle("直播吧"); setTopLeftButton(R.drawable.ic_title_back, new OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"你点击了左上角的图标",Toast.LENGTH_SHORT).show(); } }); setTopRightButton("联系人", R.drawable.ic_mine, new OnClickListener() { @Override public void onClick() { Toast.makeText(MainActivity.this,"你点击了右上角的图标",Toast.LENGTH_SHORT).show(); } }); }}
这样,在以后的开发中就可以只需改变标题栏背景颜色,标题,左右图标啦!更加方便以后开发。
更多相关文章
- android点击事件的四种方式
- Qt5.2中的android环境搭建
- Android(安卓)TextView限定行数最大值,点击按钮显示所有内容
- Jenkins持续集成安卓 Android
- android edittxet 设置可点击不可编辑状态
- eclipse安装及配置android基础教程
- Android(安卓)webview监听网页对话框点击事件
- Android开发环境配置
- Android(安卓)全自动js脚本测试 Appium教程——appium环境搭建(一