最近想要实现一个点击放大并改变底部导航栏图片的需求,寻找了一些常用的框架。
比如bottombar,实现效果如下:
image.png
比如BottomNavigationView ,实现效果如下:
image.png
以上两个第三方库都可以实现放大缩小功能,单都无法改变底部导航栏的图片,只能统一改变颜色。而针对于既要进行放大操作,又要进行更换图片操作的底部导航栏来说,不能满足需求。
项目中使用的是:radiobutton,要实现这样的功能着实苦恼了很久。后来想到了写方法来放大某个radiobutton,重置其他radiobutton ,这个方法的缺陷是因为放大的是控件,如果图片分辨率不高的话放大会造成一定程度的失真。
使用方法:当点击一个radiobutton的时候,调用以下两个方法:
setButtonScale(传入要放大的radiobutton)
resetScale(传入其他几个要重置的radiobutton )
代码如下:
public static final float SCALE_MAX = 1.2F;
public static final float SCALE_NOMAL = 1f;
private void setButtonScale(RadioButton controlRadioButton, float scaleType) {
controlRadioButton.setScaleX(scaleType);
controlRadioButton.setScaleY(scaleType);
}
public void resetScale(RadioButton bt1, RadioButton bt2) {
bt1.setScaleX(SCALE_NOMAL);
bt1.setScaleY(SCALE_NOMAL);
bt2.setScaleX(SCALE_NOMAL);
bt2.setScaleY(SCALE_NOMAL);
}
实现效果如下:
image.png