首先画出26 个字母
1.画出26个字母首先需要一个字符数组,里面的包含了26个英文字母
2.设置字母的高度为当前View的总高度除以float类型的26,设置字母显示位置,横坐标是当前View 的宽度减去一个字母的宽度,这样可以让字母显示到View 的右边缘上,纵坐标是根据字母的高度,往下累加(见代码)
3.利用for循环绘制出26个字母
点击字母时确定点击的是哪个字母,点击是更换颜色
1.复写onTouchEvent方法,然后 switch (event.getAction()),需要case 的有三个参数
2.第一个参数MotionEvent.ACTION_DOWN:表示当按下时的操作
3.第二个参数MotionEvent.ACTION_MOVE:表示当移动时的操作(手在手机屏幕上移动时的操作)
4第三个参数MotionEvent.ACTION_UP:表示抬起来的操作(手离开手机屏幕时)
5.在MotionEvent.ACTION_DOWN:下面进行左边判断,首先通过event.getX()和event.getY()得到点击时的坐标,然后x轴的坐标是否是在这一列上,然后再用y的坐标值除以当个字母的高度,然后强制造型成为int类型index,index对应string数组中的对应的字母,就是点击到的字母
6.将index换成全局变量赋初始值为-1,(默认为什么都没有选),当点击时根据第5步,将重新给index赋值,将这个值在onDraw方法中做判断如果i==index就将该字母变为蓝色(改变Paint颜色即可)其他的不变
7.在第三个参数MotionEvent.ACTION_UP下重写将index=-1;表示当手离开屏幕时默认不选择
观察者模式通过点击字母将所选择的字母显示在TextView上
1.首先写一个接口里面写入一个方法,在该方法中传入当前点击字母位置,和字母
public interface OnItemSelect{
public void OnItemSelected(int index,String indexString);
}
2.创建一个对象
private OnItemSelect listener;
3.设置该对象的set方法,将该对象传入
public OnItemSelect setOnItemListener(OnItemSelect listener) {
this.listener=listener;
return listener;
}
4.在MotionEvent.ACTION_DOWN:下调用该对象,并将数值传入
if (listener!=null) {