上面展示的是效果图,我们平时使用的通过点击字母就能找到相关字母的联系人,这就是我们想要达到的效果。
思路与步骤
根据我们想要实现的效果,我们先要理一理思路,所有的编程都是这样,有了清晰的思路才能确定每一步我们具体要做什么。
首先我们想要出现手机联系人的效果,就要先绘制右侧的字母,再对屏幕的手势滑动进行监听,使字母在被点击时变色,然后是我们的布局中的TextView内容的改变,这里TextView的改变我们需要用到监听者模式。
1、绘制右侧字母
思路:使用drawtext方法循环从上到下进行绘制。
根据屏幕高度,设置字体大小
//必须写在onMeasure方法中,
//如果写在构造器中,由于开始的时候没有及时获得宽高,导致高度默认为0
mpainttext.setTextSize(height/26f);
String数组,用于循环绘制
private String[] array=new String[]{
"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"};
在onDraw方法中进行绘制
for(int i=0;i<26;i++){
//由于字母大小不一致,选择宽度最大的'm'相减,作为x轴坐标
canvas.drawText(array[i], width-mpainttext.measureText("m"), height/26*(i+1), mpainttext);
}
}
2、覆写onTouchEvent方法,支持手势滑动
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
//ACTION_MOVE监听手指滑动
case MotionEvent.ACTION_MOVE:
//ACTION_DOWN监听手指落下
case MotionEvent.ACTION_DOWN:
//获取手指落下的x坐标与Y坐标
x=event.getX();