Android自定义字母导航栏自定义字母导航栏
主要为大家详细介绍了Android自定义字母导航栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣
的小伙伴们可以参考一下
本文实例为大家分享了Android字母导航栏的具体代码,供大家参考,具体内容如下
效果效果
实现逻辑实现逻辑
明确需求明确需求
字母导航栏在实际开发中还是比较多见的,城市选择、名称选择等等可能需要到。 现在要做到的就是在滑动控件过程中可以有
内容以及 下标的回调,方便处理其他逻辑!
整理思路整理思路
1、确定控件的尺寸,防止内容显示不全。相关的逻辑在onMeasure()方法中处理;
2、绘制显示的内容,在按下和抬起不同状态下文字、背景的颜色。相关逻辑在onDraw()方法中;
3、滑动事件的处理以及事件回调。相关逻辑在onTouchEvent()方法中;
动手实现动手实现
在需求明确、思路清晰的情况下就要开始动手实现(需要了解自定义View的一些基础API)。核心代码就onDraw()中。在代码中
有思路和注释,可以结合代码一起看看。如果有疑惑、优化、错误的地方请在评论区提出,共同进步!
完整代码完整代码
/**
* 自定义字母导航栏
*
* 总的来说就四步
* 1、测量控件尺寸{@link #onMeasure(int, int)}
* 2、绘制显示内容(背景以及字符){@link #onDraw(Canvas)}
* 3、处理滑动事件{@link #onTouchEvent(MotionEvent)}
* 4、暴露接口{@link #setOnNavigationScrollerListener(OnNavigationScrollerListener)}
*
* @attr customTextColorDefault //导航栏默认文字颜色
* @attr customTextColorDown //导航栏按下文字颜色
* @attr customBackgroundColorDown //导航栏按下背景颜色
* @attr customLetterDivHeight //导航栏内容高度间隔
* @attr customTextSize //导航栏文字尺寸
* @attr customBackgroundAngle //导航栏背景角度
*/
public class CustomLetterNavigationView extends View {
private static final String TAG = "CustomLetterNavigation";
//导航内容
private String[] mNavigationContent;
//导航栏内容间隔
private float mContentDiv;
//导航栏文字大小
private float mContentTextSize;
//导航栏文字颜色
private int mContentTextColor;