Android自定义View仿微信LetterView效果
废话不多说了,具体代码如下所示:
publicclassLetterViewextendsView{
privateStringTAG=LetterView.class.getSimpleName();
//A,B,C....Z,#
publicListletters;
privatePaintmPaint;
privateintselectPosition=-1;
privateTextViewmLetter;
publicvoidsetmLetter(TextViewmLetter){
this.mLetter=mLetter;
}
publicLetterView(Contextcontext){
this(context,null);
}
publicLetterView(Contextcontext,AttributeSetattrs){
this(context,attrs,0);
}
publicLetterView(Contextcontext,AttributeSetattrs,intdefStyleAttr){
super(context,attrs,defStyleAttr);
//生产字母
letters=newArrayList<>();
for(inti=65;i<91;i++){
letters.add(String.format(Locale.CHINA,"%c",i));
Log.e(TAG,"LetterView:"+String.format(Locale.CHINA,"%c",i));
}
letters.add("#");//追加一个#
//初始化画笔
mPaint=newPaint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLUE);
mPaint.setTextSize(30);
}
@Override
protectedvoidonDraw(Canvascanvas){
super.onDraw(canvas);
/**
*获取View的宽度
*获取View的高度
*/
intwidth=getMeasuredWidth();
intheight=getMeasuredHeight();
//测量字的宽度
intsize=letters.size();
for(inti=0;i=0){
mLetter.setText(letters.get(position));
}
}
break;
caseMotionEvent.ACTION_UP:
Log.e(TAG,"onTouchEvent:ACTION_UP");
selectPosition=-1;
if(mLetter!=null){
mLetter.setVisibility(View.GONE);
}
break;
}
//返回true代表事件被处理了
returntrue;
}
}