先上动态效果图
利用一个自定义View ,和其中的dispatchTouchEvent 拦截触摸事件实现
SideBar.java
package xyz.slideviewgettext;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import java.util.List;
/**
* Created by xyz on 2017/2/5.
*/
public class SideBar extends View {
private List<String> letterList;
private Paint paint;
public SideBar(Context context,List<String> list){
this(context,(AttributeSet) null);
this.letterList=list;
}
public SideBar(Context context, AttributeSet attributeSet){
this(context,attributeSet,0);
}
public SideBar(Context context,AttributeSet attributeSet,int defStyle){
super(context,attributeSet,defStyle);
init();
}
private void init(){
setBackgroundColor(0x000000);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int height=getHeight();//获取view的高度
int width=getWidth();//获取view的宽度
int singleHeight=height/letterList.size();//获取每一个字母所占的高度
int textHight= getFontAboveBaseLineHeight(35);
paint=new Paint();