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; } }