Android 笔记之 设置透明度 ActionBar ----ToolBar

ActionBar —- ToolBar

本来,在学习的时候看到的文章是介绍怎么在APP中加入ActionBar的,但是随着逐渐的深入了解,发现现在已经被ToolBar取代了.
ToolBar是在API 5.0以后增加的一个东西,同时在support library v7里面支持低API版本

原生的ActionBar是独立于View系统的一个东西。ToolBar是一个View,在Layout文件中直接定义,然后可以当作普通的View添加到任何地方。

<android.support.v7.widget.Toolbar
   android:id="@+id/my_toolbar"
   android:layout_width="match_parent"
   android:layout_height="?attr/actionBarSize"
   android:background="?attr/colorPrimary"
   android:elevation="4dp"
   app:popupTheme="@style/Theme.AppCompat.Light"/>

这样,你可以直接在Design视图里面看到这个ToolBar
然后,可以将之当作原来的ActionBar来使用
首先要取消掉原生的ActionBar,Theme设置里面,将parent改成没有ActionBar的主题
例如<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
然后再java文件中如下定义

Toolbar toolbar = (Toolbar)findViewById(R.id.mytoolbar);
setSupportActionBar(toolbar);

其他操作例如添加选项,和原来一样
可以方便的使用View的操作,例如获取ToolBar的高度 toolbar.getHeight()

提示:如果使用了setSupportActionBar(toolbar),那么原来针对ActionBar的操作都有效
如果没有使用这个,可以像普通VIEW一样操作ToolBar上的内容

toolbar.inflateMenu(R.menu.base_toolbar_menu);//设置右上角的填充菜单
toolbar.setOnMenuItemClickListener(...);//设置点击事件

这里有一个问题。原来的Actionbar如果使用Hide()操作以后,会有一个隐藏的动画,就像常见的那样
但是这里使用Toolbar代替以后,使用Hide()操作,没有隐藏动画,直接消失了。不知道为什么,也不知道怎么解决。
后来,在网上找了半天,发现很多开发者使用的替代方法,不调用hide(),而是使用一个translationY(),也就是Y方向的移动

toolbar.animate().translationY(-toolbar.getHeight())
                .setInterpolator(new AccelerateInterpolator(2));

animate()是用来增加一个移动动画,setInterpolator是设置动画的特效。具体的还没有仔细研究。

这样,效果和原来的一样。新的Toolbar的设置比原来的ACTIONBAR直接一点,比如下面要讲到的背景和透明度问题

设置透明度

想要给ACTIONBAR设置透明度,找了半天找不到方法。网上的资源说,需要设置主题,然后设置ActionBar的背景,但是我设置半天也没有成功,莫名其妙
后来转用ToolBar就解决了,设置Toolbar背景的方法和普通View一样

要设置toolbar透明,原先想到的是直接将这个view设置透明度
toolbar.setAlpha()
但是这样会让整个部件包括文字也透明,所以,需要只将背景设置为透明

方法1,用ARGB代码设置

ARGB代码就是在RGB的基础上增加一个A,也就是透明度ALPHA,前两位标识背景的透明度

方法2,用java代码设置

toolbar.getBackground().setAlpha(200);
注意这样会把BACKGROUND的颜色改变,其他引用这个颜色的地方也会改变

总之,原来的ActionBar要设置透明度啊,设置背景什么的,弄半天也没有成功,转用ToolBar就十分容易
既然官方推荐使用Toolbar,那何乐而不为呢?
更多信息应该在官方开发者网站上查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值