Android侧边栏滑动切换的view效果
废话不多说了,直接给大家贴代码了,具体代码如下所示:
importandroid.content.Context; importandroid.graphics.Canvas; importandroid.graphics.Paint; importandroid.graphics.drawable.BitmapDrawable; importandroid.util.AttributeSet; importandroid.view.MotionEvent; importandroid.view.View; publicclassSideBarextendsView{ privatestaticfinalintMARGIN_BOTTOM=2; privateintmItemHeight=18; privateOnLetterTouchListenermOnLetterTouchListener; privatePaintmPaint; privatefloatmWidthCenter; privateintbackgroundColor=0x00F0F0F0; privatechar[]chars=AppCommon.INDEXER_CHARS; publicinterfaceOnLetterTouchListener{ publicabstractvoidonPressedDown(intindex,charch); publicabstractvoidonPressedUp(intindex,charch); } publicSideBar(Contextcontext){ this(context,null); } publicSideBar(Contextcontext,AttributeSetattrs){ this(context,attrs,-1); } publicSideBar(Contextcontext,AttributeSetattrs,intdefStyle){ super(context,attrs,defStyle); init(); } privateintstartY=0;//其实位置的y轴坐标 publicSideBarsetChars(char[]chars){ this.chars=chars; //for(inti=0;i<(26-chars.length)/2;i++){ //startY+=i*mItemHeight; //} init(); postInvalidate(); returnthis; } privatevoidinit(){ mPaint=newPaint(); mPaint.setColor(0xFFCFCFD0); mPaint.setAntiAlias(true); mPaint.setFakeBoldText(true); mPaint.setTextSize(32); mPaint.setColor(getResources().getColor(R.color.blue)); mPaint.setSubpixelText(true); mPaint.setTextAlign(Paint.Align.CENTER); setBackgroundColor(backgroundColor); } publicbooleanonTouchEvent(MotionEventevent){ super.onTouchEvent(event); intidx=(int)event.getY()/mItemHeight; if(idx>=chars.length){ idx=chars.length-1; }elseif(idx<0){ idx=0; } if(event.getAction()==MotionEvent.ACTION_DOWN||event.getAction()==MotionEvent.ACTION_MOVE){ setBackgroundResource(R.color.sidebar_select_background); if(mOnLetterTouchListener!=null){ mOnLetterTouchListener.onPressedDown(idx,chars[idx]); } }elseif(event.getAction()==MotionEvent.ACTION_UP){ setBackgroundDrawable(newBitmapDrawable()); setBackgroundColor(backgroundColor); if(mOnLetterTouchListener!=null){ mOnLetterTouchListener.onPressedUp(idx,chars[idx]); } } returntrue; } @Override protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){ mItemHeight=(h-MARGIN_BOTTOM)/26; mWidthCenter=getMeasuredWidth()/2; super.onSizeChanged(w,h,oldw,oldh); } protectedvoidonDraw(Canvascanvas){ for(inti=0;i以上所述是小编给大家介绍的Android侧边栏滑动切换的view效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!