Android 自定义View字母滑动索引
来源:互联网 发布:黑莓9900软件下载 编辑:程序博客网 时间:2024/06/06 22:11
public class AlphaView extends View { private String[] alphas = {"#", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; private OnTouchingAlphaChangedListener mOnTouchingAlphaChangedListener; //初始化画笔 private Paint mPaint = new Paint(); //选中索引 private int mChoose = -1; //是否显示 private boolean mShowBg = false; public AlphaView(Context context) { super(context); } public AlphaView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public AlphaView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean dispatchTouchEvent(MotionEvent event) { //事件触摸发生的Y值 float y = event.getY(); //计算选中的字母索引 int index = (int) (y / getHeight() * alphas.length); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: if (mOnTouchingAlphaChangedListener != null && (index >= 0) && (index < alphas.length)) { mOnTouchingAlphaChangedListener.onTouchingAlphaChanged(alphas[index]); } mChoose = index; //invalidate()会调用onDraw办法 invalidate(); mShowBg = true; return true; case MotionEvent.ACTION_UP: mShowBg = false; mChoose = -1; invalidate(); return true; default: break; } return super.dispatchTouchEvent(event); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mShowBg) { canvas.drawColor(Color.parseColor("#40000000")); } int viewHeight = getHeight(); int viewWidth = getWidth(); int alphaH = viewHeight / alphas.length; for (int i = 0; i < alphas.length; i++) { mPaint.setColor(-1); mPaint.setTypeface(Typeface.DEFAULT_BOLD); mPaint.setAntiAlias(true); mPaint.setTextSize(30); if (i == mChoose) { mPaint.setColor(Color.parseColor("#ff1a9c78")); mPaint.setFakeBoldText(true); } float x = viewWidth / 2 - mPaint.measureText(alphas[i]) / 2.0f; float y = alphaH + alphaH * i; canvas.drawText(alphas[i], x, y, mPaint); mPaint.reset(); } } public void setOnTouchingAlphaChangedListener(OnTouchingAlphaChangedListener listener) { mOnTouchingAlphaChangedListener = listener; } //定义字母变化监听接口 public interface OnTouchingAlphaChangedListener { void onTouchingAlphaChanged(String alpha); }}
0 0
- Android 自定义View字母滑动索引
- Android 自定义View 字母索引条
- Android自定义View实现字母索引条
- 自定义字母索引View
- Android 自定义 View 实现通讯录字母索引(仿微信通讯录)
- 【Android】自定义View快速建立字母索引列表
- Android 自定义 View 实现通讯录字母索引(仿微信通讯录)
- Android 自定义View——联系人右侧字母索引
- 自定义View----点击滑动选择字母列表
- 自定义View 实现字母快速索引控件
- android 右边滑动字母索引使用
- android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索
- android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索
- android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索
- Android 自定义滑动容器View
- Android:View滑动与自定义
- Android自定义控件5----继承View通讯录索引功能之1初始化显示字母列表
- android自定义滑动开关控件,自定义view
- iOS学习笔记09-核心动画CoreAnimation
- Cocos2d-html5帧动画
- Linux下如何查看系统启动时间和运行时间
- jquery和js的区别汇总
- cocoapod使用
- Android 自定义View字母滑动索引
- [codevs 1217]借教室 题解
- leetcode(三)—— Longest Substring Without Repeating Characters(最长不重复子串 Python/C++)
- iOS学习笔记10-UIView动画
- ftp下载,TXT文件操作相关
- 使用High Level Consumer连接Kafka
- 什么函数不能申明为虚函数的问题
- Android自定义控件:进度条的四种实现方式(Progress Wheel的解析)(源码 + Demo)
- 揭开runtime的神秘面纱