前几天用了一周的时间做了一个手机蓝牙同下位机硬件通讯的安卓小软件,但是因为是安卓小白,加上这个小项目是由我个人进行开发,而本人又是不怎么擅长界面美化,但是又不想自己所开发的软件因吃相太丑而太掉面子,所以今天为了能够让软件吃相好看一点就学习并实现了仿QQ顶部渐变色的效果。在这里想做个记录,当然如果能够帮助到有该需求的朋友那就再好不过了。
先上图看下效果吧
② 接下来我们要写上面放入的渐变色资源文件(@drawable/background_main")。在drawable文件夹下创建一个资源文件然后写入下列代码。
③ 然后我们需要把系统分配的ActionBar先给取消掉
其中涉及到一些矢量图标,如果想要实现的话可以去看我的另一篇博客,Android开发图标适配手机方案 这里详细讲解了如何加入精美的矢量图标。在这里我还要给你们推荐一个图标资源网站阿里巴巴图标库 通过搜索功能应该能满足你的大部分图标需求。
② 然后接下来就要重写三个函数来加载菜单、显示菜单图标以及菜单点击事件。代码如下
//菜单显示图标
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return super.onMenuOpened(featureId, menu);
}
//菜单选项点击事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.i_setVisible:
//设置本机蓝牙设备对外可见
break;
case R.id.i_search:
//搜索蓝牙设备
break;
case R.id.i_switch:
//蓝牙的开关
break;
case R.id.i_closeAPP:
//使用活动管理类来进行关闭所有活动
break;
}
return super.onOptionsItemSelected(item);
}
③ 好啦,toolbar的菜单需求基本也完成了,再也不是只能看不能用的花瓶了。哦,对了,这里还有个功能可以让它锦上添花,也许细心的人已经发现了,你们运行的结果里面没有顶部的返回按钮,所以这里还需要提一下。那就是ActionBar的setDisplayHomeAsUpEnabled()方法,该方法的作用真是返回该Activity的父Activity,既然是有父子关系,那么这里就需要我们进行手动进行配置一下,这样他们才知道哪个是哪个的父Activity,才知道返回到哪里。有比较重要的一点是MainActivity没有父Activity。配置方法如下:在AndroidManifest.xml 文件中写入如下代码
④ 最后一步,在子Activity的class文件中使用该方法即可实现点击顶部左侧的返回图标即可回到父Activity中。
//显示返回键
//先获取到ActionBar的实例 获取的是刚刚赋值给SupportActionBar的toolbar
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
打完收工!今天又是收获满满的一天,这种充满力量的感觉真好。最后希望这篇博客能够帮助到正在努力前行的同伴,如果有问题的话欢迎加我的QQ:953516132一起讨论,愿我们能够共同进步,加油!